GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu přidat řetězec na začátek každého řádku v souboru?

jednořádkový příkaz awk by také měl stačit:

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

Celou smyčku lze nahradit jediným příkazem sed, který pracuje s celým souborem:

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

Ohledně vaší původní chyby:

./appendToFile.sh:řádek 11:/bin/sed:Seznam argumentů je příliš dlouhý

Problém je s tímto řádkem kódu:

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

$line v tomto kontextu je název souboru že sed běží proti. Pro opravu kódu byste měli opravit tento řádek jako takový:

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

(Všimněte si také, že váš původní kód by neměl mít < $file na konci.)

William Pursell řeší tento problém správně v obou svých návrzích.

Domnívám se však, že jste správně určili, že došlo k problému s vaším původním textovým souborem. dos2unix tento problém nevyřeší, protože pouze odřízne čáry pro návrat vozíku Windows na konci řádků. (Pokud se však pokoušíte číst soubor Linuxu ve Windows, dostanete mamutí řádek bez návratu.)

Za předpokladu, že se nejedná o problém se znaky konce řádku ve vašem textovém souboru, budou fungovat odpovědi Williama Pursella, Andyho Lestera nebo nullrevolution.

Varianta na while read... návrh:

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

To lze spustit přímo z shellu (není potřeba dávkového / skriptového souboru):

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

Perlský způsob, jak to udělat, by byl:

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

nebo

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

V obou případech se to čte z filename a vytiskne řádky s předponou jako STDOUT.

Pokud přidáte -i flag, pak Perl upraví soubor na místě. Můžete také zadat více názvů souborů a Perl je magicky udělá všechny.


Linux
  1. Jak vložit text před první řádek souboru?

  2. Jak rozdělit soubor a zachovat první řádek v každém z kusů?

  3. Jak v Bash přidám řetězec za každý řádek v souboru?

  1. Jak vložit text na začátek každého řádku ve Vimu

  2. Jak mohu v prostředí Linux zpracovat každý řádek víceřádkového řetězce?

  3. Jak mohu vytvořit soubor v každé složce?

  1. Jak procházet řádky souboru?

  2. Jak analyzovat každý řádek textového souboru jako argument příkazu?

  3. Přejít na začátek nebo konec souboru ve Vimu [Rychlý tip]