it-swarm.asia

Metin dosyasının her satırına satır numarası ve sekme nasıl hazırlayabilirim?

Bir metin dosyasının her satırının başına satır numarası ve sekme ekleyebilir miyim?

44
Richard Hoskins
awk '{printf "%d\t%s\n", NR, $0}' < filename
50
pgs

Nl komutu bunu yapmalıdır, ancak satır numarasından önce de boşluk ekler. Linux coreutils'in bir parçası.

nl lines.txt
 1  $bkWTN
 2  $cV8$.
52
ACoolie
sed = test.txt | sed 'N;s/\n/\t/'

"Sed =" komutu satır numarasını ve ardından satırbaşını yazdıktan sonra bir sonraki satırı yazacaktır.

"N; s/\ n/\ t /" ifadesi her satırı alır, bir sonraki satırı alır (yani, satır numarası ve satır) ve satırbaşını bir sekmeyle değiştirir.

10
Callum
cat -n <yourfile> | Perl -pe "s/^\s*(\d+)\s+/\1\t/"

cat -n, linenumbers karakterini "123 linecontents" olarak ekler ve regexp "linenumberTABlinecontents" olarak değiştirir.

4
raspi
Perl -pe "s/^/$.\t$_/" file.txt

veya

Perl -ne "print qq($.\t$_)" file.txt
3
itsadok

Tamam, İşte tek satırlık bir bash çözümü:

$ IFS=$'\n';x=1;for l in $(<file.txt);do echo -e "$x\t$l";((x+=1));done
$ IFS=

İlk IFS ayarı bash'e aynı anda tam bir satır okumasını söyler. İkinci satır, IFS'yi varsayılana sıfırlar.

Ek bir avantaj olarak, tamamen Shell'inizde çalışıyor ve bir program yürütmüyor!

2
P. Heffner

Peki ya

cat -n somefile.txt

?

2
innaM

Tamam, bunu yapmanın yollarını topladığımızdan,

 grep -n . file.txt | sed 's/\(^[0-9]*\):/\1    /g'
 # this is a tab with Ctrl-V + Tab  =====>  ---- 
1
nik
sed file.txt -e 's/^/\t/' | cat -n | sed -e 's/^\t//'

veya bazı GNU olmayan sedname__s için:

cat file.txt | sed -e 's/^/\\t/' | cat -n | sed -e 's/^\\t//'
1
chaos