放弃所有的休息我有如下形式的文件:在一个文本文件中提取两个词之间的文本,在shell脚本
blablabla var="value_var1" blabla
blablabla var="value_var2" blabla
等。我想获得一个文本文件,如:
value_var1
value_var2
...
任何想法?
在此先感谢!
放弃所有的休息我有如下形式的文件:在一个文本文件中提取两个词之间的文本,在shell脚本
blablabla var="value_var1" blabla
blablabla var="value_var2" blabla
等。我想获得一个文本文件,如:
value_var1
value_var2
...
任何想法?
在此先感谢!
你可以试试下面的sed命令,
sed 's/.*"\(.*\)".*/\1/' infile > outfile
如果你想获得的前述空间也然后使用下面的正则表达式。
sed 's/^\(*\).*"\(.*\)".*/\1\2/g' infile > outfile
你可以试试这个剪切命令:
cut -d \" -f 2 filename
或:
grep -oP '"\K[^" ]*' filename
Perl的变种
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
随着sed
您可以删除文本到第一个"
和第二个后"
与:
sed -e 's/.*"//;s/".*//' <infile> outfile
这比cut
版本稍微复杂一些,但如果它以不适当的方式处理某些行,它可能会更容易修复。