Unix - 如何将文本附加到文件的每一行(标题行/第一行除外)

Unix - 如何将文本附加到文件的每一行(标题行/第一行除外)

我有一个文件 abc.txt ,其中包含以下数据(真实数据有很多记录,比如大约 200 条)

斯诺 |姓名
1 |杰克
2 |吉尔
3 |六月

现在我如何附加文本以使我的文件看起来像这样,

斯诺 |名称 |地点
1 |杰克|巴黎
2 |吉尔|巴黎
3 |六月 |巴黎

我尝试全局替换,但第一行应该附加不同的文本。所以请帮助我。

答案1

这里有三个选项:

  • awk 及其变体(gawkmawk):

    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保存并退出。

$则表达式中的 表示“行尾”。

相关内容