GNU/Linux >> Belajar Linux >  >> Linux

Buat `cut` Ubah File Di Tempat?

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.


Linux
  1. Ubah tanggal pembuatan file

  2. Bagaimana cara membuat file jarang?

  3. Mulai ulang proses perubahan file di Linux

  1. Simpan modifikasi di tempat dengan awk

  2. Ubah byte pertama file di Linux?

  3. membuat file log

  1. Apa yang Dihitung Sebagai Modifikasi atau Perubahan File?

  2. Ubah Siapa yang Mampu Melakukan Chmod?

  3. Apakah Rsync ~/foo Target/foo Sama Dengan Rsync ~/foo/ Target/foo/?