嘿,我对常规子表达式有疑问。
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