如何在bash中替换文件中的特定行出现

时间:2016-10-01 23:33:34

标签: bash replace sed

您好我的个人项目需要一点帮助我有这样的事情:

的资源文件:

something,something,something,something,something,someth ing,result1
something,something,something,something,something,somethi ng,result2
something,something,something,something,something,someth ing,result3

我需要在最后一行之后编写我的变量,在特定行(我的每行有不同的值)

resultFile:

sed -i "$numberOfLine,/,/ s/,/,$actualDeparture/6" $fileName

我用过这个:

something,something,something,something,something,someth ing,result1
something,something,something,something,something,somethi ng,result2result1
something,something,something,something,something,someth ing,result3result2

但结果是: badResultFile:

{{1}}

我不知道为什么我有结果2和结果1在第二行,我真的 绝望,因为我不知道如何解决这个问题。

2 个答案:

答案 0 :(得分:3)

我会使用awk

awk '{ print $0 "result" NR }' sourceFile
  • print $0 "result" NR打印每一行,然后打印字符串result,然后打印每行(记录)编号(NR

示例:

% cat file.txt  
something,something,something,something,something,something,
something,something,something,something,something,something,
something,something,something,something,something,something,

% awk '{ print $0 "result" NR }' file.txt
something,something,something,something,something,something,result1
something,something,something,something,something,something,result2
something,something,something,something,something,something,result3

答案 1 :(得分:0)

使用您的地址范围$numberOfLine,/,/,处理从$numberOfLine到包含,的下一行的所有行。

并且您不需要计算,命令中s的数量,只需将$(行尾)替换为您的变量值。

要单独处理每一行,请尝试以下操作:

sed -i "$numberOfLine s/$/$actualDeparture/" "$fileName"