.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... [}
答え1
シンプル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
答え2
sed 's/.*/PREFIX&SUFFIX/' infile
特殊文字が含まれてPREFIX
いないとします。SUFFIX
\&/
(バックスラッシュ、アンパサンド、区切り記号)は、代替項目の右側にあるときに特別ですs
。これらの文字の特別な意味は、文字をエスケープして(前にバックスラッシュを追加することによって)抑制することができます。たとえば、実行の前後に1つをA//BC
追加すると、次のようになります。XY\Z&&
sed 's/.*/A\/\/BC&XY\\Z\&\&/' infile
答え3
真珠:
$ 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 -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
答え4
sedの代替
sed -e 's/^\(.*\)$/I am a \1 128 [{/
.*
行の始まりと終わりの間^
のすべての内容を検索して$
グループに入れます\( \)
。次に、プレフィックス、(最初の)グループ、および\1
サフィックスに置き換えます。