GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa menambahkan string ke awal setiap baris dalam sebuah file?

perintah awk satu baris juga bisa membantu:

awk '{print "prefix" $0}' file

Seluruh loop dapat diganti dengan satu perintah sed yang beroperasi pada seluruh file:

sed -e 's/^/prefix/' $file

Mengenai kesalahan awal Anda:

./appendToFile.sh:baris 11:/bin/sed:Daftar argumen terlalu panjang

Masalahnya ada pada baris kode ini:

sed -e 's/^/prefix/' $line

$line dalam konteks ini adalah nama file itu sed sedang berlari melawan. Untuk memperbaiki kode Anda, Anda harus memperbaiki baris ini seperti:

echo $line | sed -e 's/^/prefix/'

(Perhatikan juga bahwa kode asli Anda tidak boleh memiliki < $file di akhir.)

William Pursell membahas masalah ini dengan benar dalam kedua sarannya.

Namun, saya yakin Anda telah mengidentifikasi dengan benar bahwa ada masalah dengan file teks asli Anda. dos2unix tidak akan memperbaiki masalah ini, karena hanya menghapus carriage return stick Windows di akhir baris. (Namun, jika Anda mencoba membaca file Linux di Windows, Anda akan mendapatkan baris raksasa tanpa hasil.)

Dengan asumsi bahwa ini bukan masalah dengan karakter baris akhir dalam file teks Anda, jawaban William Pursell, Andy Lester, atau nullrevolution akan berfungsi.

Variasi pada while read... saran:

while read -r line; do  echo "PREFIX " $line; done < $file

Ini dapat dijalankan langsung dari shell (tidak perlu file batch/skrip):

while read -r line; do echo "kp" $line; done < stusers.txt

Cara Perl untuk melakukannya adalah:

perl -p -e's/^/prefix' filename

atau

perl -p -e'$_ = "prefix $_"' filename

Dalam kedua kasus, itu dibaca dari filename dan mencetak baris awalan ke STDOUT.

Jika Anda menambahkan -i bendera, maka Perl akan memodifikasi file di tempat. Anda juga dapat menentukan beberapa nama file dan Perl secara ajaib akan melakukan semuanya.


Linux
  1. Cara Menyisipkan Teks di awal setiap baris di Vim

  2. Bagaimana Melewati Garis File?

  3. Bagaimana Cara Menyisipkan Teks Sebelum Baris Pertama Sebuah File?

  1. Pergi ke Awal atau Akhir File di Vim [Kiat Singkat]

  2. Bagaimana cara membagi file dan menyimpan baris pertama di setiap bagian?

  3. Di Bash, bagaimana cara menambahkan string setelah setiap baris dalam file?

  1. Di shell Linux, bagaimana saya bisa memproses setiap baris dari string multiline?

  2. Bagaimana saya bisa membuat file di setiap folder?

  3. Bagaimana cara menyisipkan teks di awal file?