Yanıtlar:
Bunu sedyapmak için kullanabilirsiniz :
sed -i.bak 's/^/##/' file
Bu, satırın başlangıcını ( ^) ile değiştirir ##.
-i.bakAnahtar ile seddosyayı yerinde düzenler, ancak uzantılı bir yedek kopya oluşturur .bak.
sed 's/^\(.*\)$/##\1/', ama bu çok daha hoş.
İşte perl kullanarak bu soruna bir çözüm
perl -e 'while (<>) {print "##$_"}' < infile > outfile
-pAnahtar da faydalı olacaktır: perl -pe 's/^/##/' infile > outfile. ( -i[extension]Hedef dosyayı yerinde yerine koyma
Biz varken:
gawk -i inplace '{print "##"$0}' infile
Bu (nispeten yeni) GNU awk 4.1.0+ için yerinde düzenleme eklentisini kullanır.
İşte bir bashyol:
while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile
( In bashkabuğu , koşma read -rbaşka argümanlarla gibi çalışır IFS= read -r REPLY.)
Bu, büyük işlemler için muhtemelen çok daha hızlı çalıştığını kabul ettiğim beav_35'in perl çözümünden stilisten esinlenildi çünkü perlmetin işleme söz konusu olduğunda bir kabuktan daha verimli olması beklenebilir.
Vim'i Ex modunda kullanabilirsiniz:
ex -sc '%s/^/##/|x' file
% tüm satırları seç
s vekil
x kaydet ve kapat
Python'un haritalama işlevi ve stdin yönlendirmesiyle yapılabilir:
$ cat input.txt
lorem ipsum
quick brown fox
hello world
$ python -c 'import sys;print "".join(map(lambda x: "##"+x,sys.stdin.readlines()))' < input.txt
##lorem ipsum
##quick brown fox
##hello world
Çıkışı yeni dosyaya kaydedin ve orijinal yerine kullanın
sed 's/^/##/' -i file. Bu durumda, yanlış gidemeyeceği için bu tercih edilir. Diğer durumlarda, bu komutdiff -u file.bak filefarklılıkları görmek için bir araya getirilebilir (gerekirse boru üzerinden iletilirless). Çalışması onaylanırsa, yedekleme kaldırılabilir. Aksi takdirde basit bir şekilde restore edilebilirmv file.bak file.