Mac'te, BSD sed
, yedek için son ek gerektirir (ancak sonek boş bir dize olabilir, ''
) - bu, isteğe bağlı olarak GNU sed
ile uyumlu değildir. Bu nedenle, komutunuz "2d
son eki ile dosyayı yedekleyin ve… oops, verdiğin komut dosyası file.csv
, ancak f
bir sed
komutu" olarak yorumlanır.
sed -i .bak -e 2d file.csv
Bu, CSV dosyasındaki ilk veri satırını siler (başlık çizgisini yerinde bırakarak). Eğer BSD ve GNU sed
ile çalışır, böylece kod yazmak istiyorsanız
, o zaman GNU sed
-i
seçeneğe bağlı soneki gerektirir (-i
seçeneğe sonek eklemek var; işte o olup olmadığını belirler nasıl isteğe bağlı eki veya değil): boş bir ekini kullanmak ve BSD sed
ve GNU sed
hem komut işi olamaz
sed -i.bak -e 2d file.csv
Not.
-e
, komut satırında gerekli değildir, ancak oldukça sık kullanırım. Aynı zamanda burada gerekli olmadığı halde, tek bir alıntıda da sıklıkla alıntı yapıyorum.
İlk iki veri hattını silmek isterseniz, komut olarak 2,3d
'u kullanın. İlk iki satırı silmek istiyorsanız, 1,2d
'u kullanın. Yedekleme istemiyorsanız
, o zaman sed
komut tamamlanıncaya sonra çıkarın (en kolay) veya iki aşamalı veya üç aşamalı dans kullanabilirsiniz ya: Bunlarla
sed 2d file.csv > file.csv.bak &&
mv file.csv.bak file.csv # Oops; there went the links
sed 2d file.csv > file.csv.bak &&
cp file.csv.bak file.csv
rm -f file.csv.bak
, ihtiyacınız olabilecek Bir kesme veya başka bir sinyal komut dosyasını sonlandırırsa, ara .bak
aralığını temizlemek için trap
komutları eklemek. sed
Apple belgelerinden alıntı
- aslen o silmeye seçen bir answer yılında Diego tarafından kaydedildi, -i
seçenek yedekleme kopyaları için kullanmak uzantısını belirleyen bir argüman alır.
-i
extension
Edit files in-place, saving backups with the specified extension. If a zero-length extension is given, no backup will be saved. It is not recommended to give a zero-length extension when in-place editing files, as you risk corruption or partial content in situations where disk space is exhausted, etc.
Bu, ikinci satırdaki öğeyi siler, ancak ilk satırı değil: "sed 2d dosya.csv> file.csv.bak && cp file.csv.bak dosya.csv rm -f dosya.csv.bak" – NumenorForLife
Dosyadaki ilk iki satırı nasıl sileceğimi ve dosyadaki ilk iki veri satırını nasıl sileceğimi ele aldım. Daha fazla İstediğiniz ne? –