我有一个以下形式的文件:
blablabla var="value_var1" blabla
blablabla var="value_var2" blabla
等等。我想获得一个文本文件,如:
value_var1
value_var2
...
有什么想法吗?
提前感谢!
答案 0 :(得分:2)
你可以尝试这个剪切命令:
cut -d \" -f 2 filename
或:
grep -oP '"\K[^" ]*' filename
答案 1 :(得分:0)
你可以试试下面的sed命令,
sed 's/.*"\(.*\)".*/\1/' infile > outfile
如果你想获得前面的空格,那么使用下面的正则表达式。
sed 's/^\( *\).*"\(.*\)".*/\1\2/g' infile > outfile
答案 2 :(得分:0)
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
从任何 something =“值”获取价值下一个grep将起作用
grep -oP '=\s*"\K(.*?)(?=")'
用于输入相同的输入
some
value_var1
value2
value_var2
答案 3 :(得分:0)
使用sed
,您可以删除第一个"
以及第二个"
之后的文字:
sed -e 's/.*"//;s/".*//' < infile > outfile
这比cut
版本要复杂一些,但如果以不恰当的方式处理某些行,则可能更容易修复。