我想要一个awk或sed命令在regexp之后打印这个单词。
我想在WORD之后找到WORD而不是看起来相似的WORD。
该文件如下所示:
somethingsomething
X-Windows-Icon=xournal
somethingsomething
Icon=xournal
somethingsomething
somethingsomething
我希望“xournal”来自一个说“Icon = xournal”的人。这是我到现在为止的进展。我也尝试了一个AWK字符串但它也没有成功。
cat "${file}" | grep 'Icon=' | sed 's/.*Icon=//' >> /tmp/text.txt
但我得到了两个,所以文本文件给出了两个我不想要的xournal。
答案 0 :(得分:4)
使用^
将模式锚定在行的开头。你甚至可以直接在sed中进行grepping:
sed -n '/^Icon=/ { s/.*=//; p; }' "$file" >> /tmp/text.txt
你也可以使用awk,我觉得它看起来好一些。使用=
作为字段分隔符,如果字段1为Icon
,则打印字段2:
awk -F= '$1=="Icon" {print $2}' "$file" >> /tmp/text.txt
答案 1 :(得分:0)
即使Perl不是其中一个标记,这可能也很有用。 如果您对Perl感兴趣,这个小程序将为您完成任务:
#!/usr/bin/perl -w
while(<>)
{
if(/Icon\=/i)
{
print $';
}
}
这是输出:
C:\Documents and Settings\Administrator>io.pl new2.txt
xournal
xournal
说明:
while (<>)
在执行时从命令行中作为参数提供的文件中获取输入数据。(/Icon\=/i)
是if
条件中使用的正则表达式。$'
将在正则表达式后打印部分行。答案 2 :(得分:0)
您只需要:
sed -n 's/^Icon=//p' file