我是 sed 的新手,所以想知道如何匹配选项卡。我有一些这样的文字 -
line one {
line two {
filler {
text value
}
line four
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用表达式,如果没有选项卡,则匹配上述文本。
sed -i -e "/ line two {/,/}/s/text .*\$/text new/" $file
Run Code Online (Sandbox Code Playgroud)
但是,“第二行”之前有 2 个选项卡,“填充”之前有 3 个选项卡,“文本值”之前有 4 个选项卡。
有什么帮助吗?
在 GNU 中sed,制表符表示为\t. 因此,将通过以下方式成功进行替换:
sed -i -e "/\tline two {/,/}/s/text .*\$/text new/" "$file"
Run Code Online (Sandbox Code Playgroud)
唯一需要的更改是替换/ line two {/为/\tline two {/. 该命令/s/text .*\$/text new/不需要任何更改,因为它不会尝试匹配text. 如果有可能是一个选项卡下面 text,然后使用:
sed -i -e "/\tline two {/,/}/s/text[[:space:]].*\$/text new/" "$file"
Run Code Online (Sandbox Code Playgroud)
如果您不确定将出现什么空格字符,则该表达式[[:space:]]可用于匹配任何类型的空格。