Saya pertama kali berpikir tentang SED ( sed "s/^/COUNTER \&/" /tmp/1.tex
) tetapi ini dirancang untuk satu baris, dan saya tidak bisa menambah counter itu sendiri dengan sed berpikir sekarang awk
karena saya memiliki pengalaman hebat gawk
dalam pendekatan terintegrasi. Data
What & South Dragon & North Dragon & 5 \\ \hline
What & South Dragon & North Dragon & 5 \\ \hline
What & South Dragon & North Dragon & 5 \\ \hline
Output yang diharapkan
1 & What & South Dragon & North Dragon & 5 \\ \hline
2 & What & South Dragon & North Dragon & 5 \\ \hline
3 & What & South Dragon & North Dragon & 5 \\ \hline
OS: Debian 8.5
text-processing
awk
nl
Léo Léopold Hertz 준영
sumber
sumber
nl -s ' &' /path/to/file
.-s
menentukan apa yang memisahkan angka-angka dari badan file input.nl
berbeda daricat -n
danawk
solusi dalam hal itu tidak nomor baris kosong secara defaultIni mencapai apa yang Anda kejar. (Seperti halnya
awk '$0=NR" & "$0' filename
, tapi itu agak samar)Atau jika
sed
lebih disukai, ini memberikan hasil yang sama.perl
pendekatan.sumber
sed = filename | ...
? - - Saya tidak tahu bahwa Anda dapat menggunakan sed denganequal
simbol. - - Bisakahsed
pernyataan Anda bekerja di lingkungan yang dinamis? Adakah kelemahan?=
operator di bawah bagian "Perintah Zero atau Alamat Satu".= Print the current line number
. Jadi fitur ini sebenarnya built-in sed. Bagus!Python dapat menjadi alat alternatif yang baik untuk ini:
Cara kerjanya adalah kita mengarahkan teks ke stdin python, dan membaca baris dari sana.
enumerate()
fungsi adalah apa yang memberi jumlah baris, dengansys.stdin
ditentukan sebagai input dan1
merupakan indeks awal. Sisanya sederhana - kita membuat daftar string baru dengan casting index ketika string digabungkan bersama dengan' & '
string, dan garis itu sendiri. Akhirnya, semua itu disusun kembali dari daftar menjadi satu tes oleh''.join()
fungsi.Atau, inilah versi multi-line untuk file skrip atau hanya untuk dibaca:
Bekerja sama saja:
Tetapi jika Anda lebih suka melakukannya di bash, maka itu bisa dilakukan juga:
sumber
enumerate()
menyimpan seperti 3 baris kode. Ini berguna saat berurusan dengan hal-hal lain, seperti memproses item dalam daftar. Lihat docs.python.org/2/library/functions.html#enumeratebash
contoh, maka jangan ragu untuk menggunakan itu :) Saya baru saja menemukan dari pengalamanenumerate()
menjadi lebih elegan, tetapi itu hanya pendapat saya. Dengan segala cara, gunakan metode lain jika Anda pikir itu lebih jelasenumerate
lebih jelas daripada instantiasi variabel. Bisakah ekspresi lambda menghemat ruang?Ini juga merupakan opsi menggunakan
cat -n
penomoran otomatis:sumber