我正在尝试将文本附加到 .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
。这些字符的特殊含义可以通过转义它们(在它们前面加上反斜杠)来抑制,例如在前面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:
$ 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
和后缀替换它。