web-dev-qa-db-ja.com

.txtファイルのすべての行に接頭辞と接尾辞を追加する

.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... [}
8
Terkey-Juice

シンプル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
17
RomanPerekhrest
sed 's/.*/PREFIX&SUFFIX/' infile

PREFIXSUFFIXに特殊文字が含まれていないと仮定して行います。


\&/(バックスラッシュ、アンパサンド、および区切り文字)は、substitutionの右側にある場合に特別です。これらの文字の特別な意味は、エスケープする(バックスラッシュを前に付ける)ことで抑制できます。先頭にA//BCと追加するXY\Z&& 1つ実行します:

sed 's/.*/A\/\/BC&XY\\Z\&\&/' infile
6
don_crissti

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 
2
terdon

代替sed

_sed -e 's/^\(.*\)$/I am a \1 128 [{/
_

開始_.*_と行末_^_の間のすべての_$_を検索し、グループ\( \)に配置します。次に、プレフィックス、(最初の)グループ_\1_、およびサフィックスに置き換えます。

1
CSM