Viv*_*ek 4 sed text-processing
我有一个文本文件,只想提取以特定字符串开头和结尾的文本,使用sed.
例如,在这一行中:
string>![TEST[Extract this string]>/string>
Run Code Online (Sandbox Code Playgroud)
我想得到
Extract this string
Run Code Online (Sandbox Code Playgroud)
你将如何实现这一点sed?基本上我想获得以表达式“ string>![TEST[”开头并以表达式“ ”结尾的文本]>/string>。
sed -e 's/string>!\[TEST\[\(.*\)]>\/string>/\1/' file
Run Code Online (Sandbox Code Playgroud)
或者
sed -e 's|string>!\[TEST\[\(.*\)]>/string>|\1|' file
Run Code Online (Sandbox Code Playgroud)
输出:
提取这个字符串
您不仅需要告诉字符串要匹配什么,还要告诉字符串要保存什么:
sed -ne 's@string>!\[TEST\[\([^]]*\)\]>/string>@\1@gp'
Run Code Online (Sandbox Code Playgroud)
该s命令sed有两个参数:一个正则表达式和替换字符串。通常,/分隔符用于分隔两者,但您可以使用任何字符,在本例中为@. 正则表达式中有一些特殊字符,例如[, ]。\如果您想要真正的字符,则需要引用这些字符,例如string>!\[. 在\([^]]*\)方括号中的捕捉一切。并且\1用与正则表达式匹配的内容替换 who 字符串。最后是@gp,它告诉 send 在行 ( g)上多次匹配并打印替换的行(在我们告诉sed不使用-n选项打印行之后。