向 .txt 文件中的每一行添加前缀和后缀

向 .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... [}

答案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

会做,假设PREFIXSUFFIX包含任何特殊字符。


\&/(反斜杠、与号和分隔符)在替换的右侧时是特殊的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和后缀替换它。

相关内容