我有一个文件 abc.txt ,其中包含以下数据(真实数据有很多记录,比如大约 200 条)
斯诺 |姓名
1 |杰克
2 |吉尔
3 |六月
现在我如何附加文本以使我的文件看起来像这样,
斯诺 |名称 |地点
1 |杰克|巴黎
2 |吉尔|巴黎
3 |六月 |巴黎
我尝试全局替换,但第一行应该附加不同的文本。所以请帮助我。
答案1
这里有三个选项:
awk 及其变体(
gawk
等mawk
):awk '{if(NR==1){print $0,"| Place"} else{print $0,"| Paris"}}' file.txt
珀尔:
perl -lne '$.==1 ? print "$_ | Place" : print "$_ | Paris"' file.txt
sed
sed '1 s/$/ | Place/; 1! s/$/ | Paris/' file.txt
答案2
对于脚本化的“就地”文件编辑,请使用ex
:
printf '%s\n' '1s/$/ | Place/' '2,$s/$/ | Paris/' x | ex abc.txt
printf
向 发出命令ex
。1s
仅在第一行执行替换。2,$s
对所有其他行执行替换。x
保存并退出。
正$
则表达式中的 表示“行尾”。