.txtファイルのすべての行にテキストを追加および追加しようとしています。
先頭に追加したい:I am a
追加したい:128... [}
すべての行に。
A.txtの内部:
fruit, like
bike, like
dino, like
次のコマンドを実行すると:
$ cat a.txt|sed 'I am a ',' 128... [}'
思い通りに動かない。私は本当にそれが次のことを言って欲しいです:
I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}
シンプルsed
アプローチ:
sed 's/^/I am a /; s/$/ 128... [}/' file.txt
^
-文字列/行の開始を意味します$
-文字列/行のの終わりを表します出力:
I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}
または、Awk
を使用して、次のようにすることもできます。
awk '{ print "I am a", $0, "128... [}" }' file.txt
sed 's/.*/PREFIX&SUFFIX/' infile
PREFIX
とSUFFIX
に特殊文字が含まれていないと仮定して行います。
\&/
(バックスラッシュ、アンパサンド、および区切り文字)は、s
ubstitutionの右側にある場合に特別です。これらの文字の特別な意味は、エスケープする(バックスラッシュを前に付ける)ことで抑制できます。先頭にA//BC
と追加するXY\Z&&
1つ実行します:
sed 's/.*/A\/\/BC&XY\\Z\&\&/' infile
Perl:
$ Perl -lne 'print "I am a $_ 128... [}"' file
I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}
より多くのPerl:
$ Perl -pe 's/^/I am a /; s/$/ 128... [}/' file
I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}
そしてもう少しPerl:
$ Perl -lpe '$_="I am a $_ 128... [}"' file
I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}
これらすべてについて、-i
を使用して元のファイルを変更できます。
$ Perl -i -lne 'print "I am a $_ 128... [}"' file
$ Perl -i -pe 's/^/I am a /; s/$/ 128... [}/' file
$ Perl -i -lpe '$_="I am a $_ 128... [}"' file
代替sed
_sed -e 's/^\(.*\)$/I am a \1 128 [{/
_
開始_.*
_と行末_^
_の間のすべての_$
_を検索し、グループ\( \)
に配置します。次に、プレフィックス、(最初の)グループ_\1
_、およびサフィックスに置き換えます。