追加到行尾sed / awk

这可能很容易,现在没有点击我和我缺乏咖啡。 我有一个文件,多行的选项卡开始,然后单词GROUP something {

在某些情况下,无论出于何种原因,这些线条中的某些线条会掉落大括号 快速解决方法是使用sed / awk将大括号附加到该行,但不包括括号已经存在的行。 我已经半途而废了,但是正如你所看到的,这会将开放的大括号附加到以tab和GROUP开始的每一行。

sed '/[ \t]GROUP/ s/$/ {/' scst.conf.test > greg.scst.out 

你可以试试这个sed命令:

 $ sed '/[ \t]GROUP/ s/{*$/ {/' scst.conf.test > greg.scst.out 

检查GROUP something没有{和回引用它,然后用\1 {replace。

 sed 's|\([ \t]GROUP.*\)[^{]$|\1 {|' yourfile 

将以下testing文件作为test.txt

  GROUP blah { GROUP blah { GROUP blah GROUP blah { GROUP blah { GROUP blah { GROUP blah GROUP blah { GROUP blah { GROUP blah { GROUP blah { 

以下sed脚本来完成业务:

 sed -r 's/\tGROUP(.*)[^{]$/&{/' test.txt 

输出看起来像这样:

  GROUP blah { GROUP blah { GROUP blah { GROUP blah { GROUP blah { GROUP blah { GROUP blah { GROUP blah { GROUP blah { GROUP blah { GROUP blah { 

那是对的吗? 它所做的是查找具有tab-> GROUP任意字符但最后没有{}的行。 用匹配的行replace它(这就是&所做的),然后附加一个{之后。