提取文本文件中两个单词之间的文本,放弃shell脚本中的所有剩余内容

提取文本文件中两个单词之间的文本,放弃shell脚本中的所有剩余内容,shell,sed,Shell,Sed,我有一份表格文件: blablabla var="value_var1" blabla blablabla var="value_var2" blabla 等等。我想获得如下文本文件: value_var1 value_var2 ... 有什么想法吗 提前谢谢 您可以尝试下面的sed命令 sed 's/.*"\(.*\)".*/\1/' infile > outfile 如果您还想获得前面的空格,请使用下面的正则表达式 sed 's/^\( *

我有一份表格文件:

    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
或:

perl变体

  • 将只匹配var=“某物”,而不匹配var2=“其他”
  • 将匹配行中的多个事件
从下一个输入

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
sed-e的s/*/;s/*/'outfile
这比
cut
版本要复杂一些,但如果它以不适当的方式处理某些行,则可能更容易修复

some
value_var1
value2
value_var2
sed -e 's/.*"//;s/".*//' < infile > outfile