GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso anteporre una stringa all'inizio di ogni riga in un file?

anche un comando awk di una riga dovrebbe funzionare:

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

L'intero ciclo può essere sostituito da un singolo comando sed che opera sull'intero file:

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

Per quanto riguarda il tuo errore originale:

./appendToFile.sh:riga 11:/bin/sed:elenco di argomenti troppo lungo

Il problema è con questa riga di codice:

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

$line in questo contesto è nome file quel sed sta correndo contro. Per correggere il tuo codice dovresti correggere questa riga come tale:

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

(Nota anche che il tuo codice originale non dovrebbe avere il < $file alla fine.)

William Pursell affronta correttamente questo problema in entrambi i suoi suggerimenti.

Tuttavia, credo che tu abbia identificato correttamente che c'è un problema con il tuo file di testo originale. dos2unix non risolverà questo problema, poiché elimina solo i ritorni a capo di Windows si attaccano alla fine delle righe. (Tuttavia, se stai tentando di leggere un file Linux in Windows, otterrai una riga gigantesca senza ritorni.)

Supponendo che non si tratti di un problema con i caratteri di fine riga nel file di testo, le risposte di William Pursell, Andy Lester o nullrevolution funzioneranno.

Una variante del while read... suggerimento:

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

Questo potrebbe essere eseguito direttamente dalla shell (non c'è bisogno di un file batch/script):

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

Un modo Perl per farlo sarebbe:

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

o

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

In entrambi i casi, si legge da filename e stampa le righe prefissate su STDOUT.

Se aggiungi un -i flag, quindi Perl modificherà il file sul posto. Puoi anche specificare più nomi di file e Perl li farà magicamente tutti.


Linux
  1. Come inserire del testo all'inizio di ogni riga in Vim

  2. Come posso fare in modo che grep stampi le righe sotto e sopra ogni riga corrispondente?

  3. Come dividere un file e mantenere la prima riga in ciascuno dei pezzi?

  4. Aggiungi una stringa di prefisso all'inizio di ogni riga

  5. In Bash, come aggiungo una stringa dopo ogni riga in un file?

Come estrarre il file tar.gz in Linux utilizzando la riga di comando

Come aggiungere testo all'inizio del file in Linux

Come inserire del testo prima della prima riga di un file?

Come analizzare ogni riga di un file di testo come argomento di un comando?

Vai all'inizio o alla fine del file in Vim [Suggerimento rapido]

Come posso aprire un file con i numeri di riga visualizzati dalla riga di comando in "vi"?