正则表达式:
^ *x *\=.*$
表示“匹配文字x前面有任意数量的空格,后跟任意数量的空格,然后是等号,然后是直到行尾的任何内容。” Sed被调用为:
sed -r -e 's|^ *x *\=.*$||g' file
然而它没有找到一个匹配,尽管它应该。正则表达式有什么问题?
致所有人:感谢您的回答和努力!似乎问题出现在输入文件中的选项卡中,这些选项卡与空格说明符“
”不匹配。但是,\s
的解决方案无论现有标签如何都可以使用!
答案 0 :(得分:5)
^\s*x\s*=.*$
也许你必须逃避一些角色,一个一个地弄明白。
BTW:正则表达式标签应该有三个要求:
输入字符串是什么,输出字符串和平台/语言是什么。
答案 1 :(得分:0)
或者'^[ ]*x[ ]*='
。它有点兼容,但不匹配标签等。而且,如果你不需要小组,为什么还要为这一行的其余部分烦恼呢?
答案 2 :(得分:0)
sed
逐行处理文件,并为每个文件执行给定的程序。做你想做的最简单的程序是
sed -re '/^ *x *=.*$/!d' file
/^ *x *=.*$/
”选择与该模式匹配的每一行。!
”否定了结果。d
”删除该行。 sed
将默认打印所有行。这有效地打印了与模式匹配的线条。
另一种写作方式是:
sed -rne '/^ *x *=.*$/p' file
/^ *x *=.*$/
”选择与该模式匹配的每一行。p
”打印该行。这里的不同之处在于我使用“-n
”开关来禁止自动打印线条,而只打印我选择的线条。
您还可以使用“grep
”执行此任务:
grep -E '^ *x *=.*$' file