man
tidak memberi saya banyak harapan, tetapi saya berharap ini adalah fitur yang tidak didokumentasikan (dan/atau khusus GNU).
Jawaban yang Diterima:
Anda tidak bisa. Gunakan ed atau GNU sed atau perl, atau lakukan apa yang mereka lakukan di belakang layar, yaitu membuat file baru untuk kontennya.
ed
, portabel:
ed foo <<EOF
1,$s/^([^,]*),([^,]*),([^,]*).*/1,3/
w
q
EOF
GNU sed
:
sed -i -e 's/^([^,]*),([^,]*),([^,]*).*/1,3/' foo
Perl:
perl -i -l -F, -pae 'print @F[1,3]' foo
cut
, membuat file baru (disarankan, karena jika skrip Anda terganggu, Anda dapat menjalankannya lagi):
cut -d , -f 1,3 <foo >foo.new &&
mv -f foo.new foo
cut
, mengganti file di tempatnya (mempertahankan kepemilikan dan izin foo
, tetapi membutuhkan perlindungan dari gangguan):
cp -f foo foo.old &&
cut -d , -f 1,3 <foo.old >foo &&
rm foo.old
Saya sarankan menggunakan salah satu cut
-metode berbasis. Dengan begitu Anda tidak bergantung pada alat non-standar apa pun, Anda dapat menggunakan alat terbaik untuk pekerjaan itu, dan Anda mengontrol perilaku saat interupsi.