2014-09-29 47 views

回答

0

你可以试试下面的sed命令,

sed 's/.*"\(.*\)".*/\1/' infile > outfile 

如果你想获得的前述空间也然后使用下面的正则表达式。

sed 's/^\(*\).*"\(.*\)".*/\1\2/g' infile > outfile 
2

你可以试试这个剪切命令:

cut -d \" -f 2 filename 

或:

grep -oP '"\K[^" ]*' filename 
0

Perl的变种

  • 只会匹配VAR =” 东西和不VAR2 =” 其他”
  • 将在线路
perl -nE 'say $1 while m/\bvar\s*=\s*"(.*?)"/g' 

从下一个输入相匹配多次出现

blabl somevar="some" abla var="value_var1" blabla var = "value2" blabal 
blablabla var="value_var2" blabla 

产生

value_var1 
value2 
value_var2 

从任何东西=“德值的下一个grep的将工作

grep -oP '=\s*"\K(.*?)(?=")' 

对于相同的输入打印

some 
value_var1 
value2 
value_var2 
0

随着sed您可以删除文本到第一个"和第二个后"与:

sed -e 's/.*"//;s/".*//' <infile> outfile 

这比cut版本稍微复杂一些,但如果它以不适当的方式处理某些行,它可能会更容易修复。

相关问题