附加到行尾 sed/awk

附加到行尾 sed/awk

这可能很简单,但我现在没有意识到,而且咖啡也喝不上。我有一个文件,里面有多行以制表符开头,然后是单词 GROUP something {

某些行出于某种原因,在某些情况下会删除花括号。快速修复方法是使用 sed/awk 将花括号附加到该行,但不附加到已经存在花括号的行。我已经完成了一半,但正如您所见,这会将左花括号附加到以制表符和 GROUP 开头的每一行。

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

答案1

你可以尝试这个sed命令:

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

答案2

检查GROUP something是否有{,然后反向引用它,然后用替换\1 {

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

答案3

使用以下测试文件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 任何字符但末尾没有 { 的行。用匹配的行替换它(这就是 & 的作用)并在后面附加一个 {。

相关内容