Bagaimana saya bisa menambahkan nomor baris dan tab ke awal setiap baris file teks?
Bagaimana saya bisa menambahkan nomor baris dan tab ke awal setiap baris file teks?
Jawaban:
awk '{printf "%d\t%s\n", NR, $0}' < filename
awk '{print NR, "\t", $0}'.
nljuga SALAH. Dalam kode sumber, itu tidak akan pernah memberi Anda nomor baris yang benar, karena tidak menghitung baris hanya dengan spasi putih.
Perintah nl harus melakukan ini, tetapi juga menambah spasi sebelum nomor baris. Itu bagian dari Linux coreutils.
nl lines.txt
1 $bkWTN
2 $cV8$.
nluntuk menghilangkan spasi sebelum nomor. Cukup gunakan -w1opsi untuk memberi tahu itu lebar minimum untuk angka adalah 1.
-nlnAnda dapat dibenarkan-kiri jika Anda tidak ingin spasi sebelum nomor baris. Juga, untuk menentukan pemisah tab Anda dapat menggunakan -s$'\t'atau -s' '(masukkan tab di antara tanda kutip tunggal dengan ctrl+vitu tab).
nl -w1(dari GNU coreutils 8.24) tidak memotong angka baris.
sed = test.txt | sed 'N;s/\n/\t/'
Perintah "sed =" akan mencetak nomor baris diikuti dengan carriage return dan kemudian baris berikutnya.
Ekspresi "N; s / \ n / \ t /" akan mengambil setiap baris, dapatkan baris berikutnya (yaitu nomor baris dan baris), dan ganti carriage return dengan tab.
\nini adalah umpan baris (biasanya disebut "baris baru", karena penggunaannya yang pertama tersebar luas di Unix), dan \rmerupakan carriage return. Penggunaan Windows \r\n(juga disebut sebagai CRLF).
Bagaimana tentang
cat -n somefile.txt
?
Oke, inilah solusi bash satu baris:
$ IFS=$'\n';x=1;for l in $(<file.txt);do echo -e "$x\t$l";((x+=1));done
$ IFS=
Pengaturan IFS pertama memberi tahu bash untuk membaca baris penuh pada satu waktu. Baris kedua me-reset IFS ke default.
Sebagai bonus tambahan, ini berjalan sepenuhnya di shell Anda dan tidak menjalankan program!
Oke, karena kami sedang mengumpulkan cara untuk melakukan ini,
grep -n . file.txt | sed 's/\(^[0-9]*\):/\1 /g'
# this is a tab with Ctrl-V + Tab =====> ----
sed file.txt -e 's/^/\t/' | cat -n | sed -e 's/^\t//'
atau untuk beberapa non-GNU sed:
cat file.txt | sed -e 's/^/\\t/' | cat -n | sed -e 's/^\\t//'