sed - 查找(并编辑)恰好包含三个冒号(不相邻)的行

sed - 查找(并编辑)恰好包含三个冒号(不相邻)的行

我需要将一些字符附加到文件中包含三个冒号 ( ) 字符的一行的末尾:。这三个:字符不会相邻。

最初我需要编辑的行包含字符/16,我能够使用以下sed命令成功找到并编辑它:

sed "/\/16/ s/$/ ${runid} ${dirname} ${doc}/" $logname  > $logname.new

然而,应用程序已更改,字符/16不再出现在目标行上。我现在找到它的唯一方法是找到恰好包含三个字符的行:

答案1

尝试

sed "s/^[^:]*:[^:]*:[^:]*:[^:]*$/s/$/ ${runid} ${dirname} ${doc}/" $logname  > $logname.new

在哪里

  • [^:]*任意数量的符号,不是冒号
  • ^$是行的开头和结尾。

这可能是打高尔夫球的。

相关内容