it-swarm.dev

Come posso anteporre un numero di riga e una scheda a ciascuna riga di un file di testo?

Come posso aggiungere un numero di riga e una scheda all'inizio di ogni riga di un file di testo?

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

Il comando nl dovrebbe farlo, ma aggiunge spazio prima del numero di riga. Fa parte dei coreutils di Linux.

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

Il comando "sed =" stamperà il numero di riga seguito da un ritorno a capo e quindi dalla riga successiva.

L'espressione "N; s/\ n/\ t /" prende ogni riga, ottiene la riga successiva (cioè il numero di riga e la linea) e sostituisce il ritorno a capo con una scheda.

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

cat -n aggiunge lenzuoli come "123 linecontents" e che regexp lo modifica in "linenumberTABlinecontents"

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

o

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

OK, ecco una soluzione bash a una linea:

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

La prima impostazione IFS dice a bash di leggere una riga intera alla volta. La seconda riga ripristina l'IFS di default.

Come bonus aggiuntivo, viene eseguito completamente nella shell e non esegue un programma!

2
P. Heffner

Che ne dite di

cat -n somefile.txt

?

2
innaM

Ok, visto che stiamo raccogliendo modi per farlo,

 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//'

o per alcuni sedname__s non-GNU:

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