帮助 grep 正则表达式/子表达式

帮助 grep 正则表达式/子表达式

嘿,我对常规子表达式有疑问。

grep -o ".*='.*'" parameters.txt

parameters.txt包括:

name='something'
lastname=' 123123'
something='   somethinggg'

我的正则表达式返回所有内容,但我希望它只返回不带=and的名称和值' '。我还希望它不受空格和制表符的影响。

name something
lastname 123123
somethign somethinggg

答案1

对于你的情况,我建议使用sed

sed -r "/^[^=]*$/d;t;s/=/ /;s/'//g;s/[\t ]+/ /g" parameters.txt

这个命令

  • 跳过任何行不是包含一个=标志
  • 取代首先 =通过一个空格(将其保留为开放状态,“值”部分本身可能包含一个赋值)
  • '不替换任何单引号
  • 将任意多个制表符和空格替换为一个空格

答案2

sed -e 's/['\''=]/ /g;s/  */ /g'

答案3

$ tr '=' ' ' < parameters.txt  | sed "s,',,g"  | sed -E "s,\s+, ,g"
name something
lastname 123123
something somethinggg

答案4

使用 Perl:

perl -pe "tr/=' \t/ /d"   parameters.txt

相关内容