A B 5 C Hello: XYZ 'Main Search String', Searching In: '[Name] = "I just want this" AND [State] = Active ('NAME', 'ACT')
如何提取此字符串:I just want this
grep "Main Search String" filename | awk -F"tab" '{print $6}' | ??
答案 0 :(得分:1)
使用awk
awk -F\" '/Main Search String/ {print $2}' file
I just want this
答案 1 :(得分:1)
使用grep
grep -Po "\[Name\] = \"\K[^\"]*" file
grep -Po "(?<=\[Name\] = \")[^\"]*" file
答案 2 :(得分:0)
sed -n 's/.*\[Name\] = "\([^"]*\)".*/\1/p' YourFile
假设内容介于"
和输入文件的任何行上的标签[Name]之间
答案 3 :(得分:0)
如果你想要更多乐趣:)
$ cat /tmp/delme
A B 5 C Hello: XYZ 'Main Search String', Searching In: '[Name] = "I just want this" AND [State] = Active ('NAME', 'ACT')
$ cat /tmp/delme | perl -e 'while (<>) { if ( /.*[Name] = \"(.*)\"/ ) { print "$1\n"; } };'
I just want this
有了这个你就可以使用整个正则表达式和模式匹配perl提供的东西...而perl几乎在我所知道的每个系统上都有。试一试吧! ;)
已针对模式发现案例进行了编辑:
$ cat /tmp/delme | perl -e 'while (<>) { print "TEXT: ";print; if ( /.*Main Search String.*\[Name] = "(.*)\"/ ) { print "RESULT: $1\n"; } };'
TEXT: A B 5 C Hello: XYZ 'Main Search String', Searching In: '[Name] = "I just want this" AND [State] = Active ('NAME', 'ACT')
RESULT: I just want this
TEXT: A B 5 C Hello: XYZ 'Not Search String', Searching In: '[Name] = "I just want this" AND [State] = Active ('NAME', 'ACT')
答案 4 :(得分:0)
用13个字符加上文件名:
cut -d\" -f 2 text.txt
此命令将文本切割为由双引号分隔的列。 (-d \“)创建三列。它用你的答案打印出第二列(-f 2)。
就像Lutz Horn所说,你需要提供更大的数据集来测试这些命令。如果他们不代表他们需要解析的完整模式,他们中的许多将会失败。