sed - 我如何在正则表达式之后打印单词而不是相似的单词?

标签 sed awk duplicates

我想要一个 awk 或 sed 命令来打印正则表达式后的单词。

我想找到一个 WORD 之后的 WORD,而不是看起来相似的 WORD。

文件看起来像这样:

 somethingsomething
 X-Windows-Icon=xournal
 somethingsomething
 Icon=xournal
 somethingsomething
 somethingsomething 

我想要来自“Icon=xournal”的“xournal”。这是我到现在为止已经走了多远。我也尝试过 AWK 字符串,但也不成功。

cat "${file}" | grep 'Icon=' | sed 's/.*Icon=//' >> /tmp/text.txt

但我得到了两个,所以文本文件给出了两个我不想要的 xournal。

最佳答案

使用 ^ 将模式锚定在行的开头。您甚至可以直接在 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

关于sed - 我如何在正则表达式之后打印单词而不是相似的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3672139/

相关文章:

pandas - 删除具有在 Pandas 数据框中移动的两列的重复值的行?

linux - 为什么 sed 会留下很多文件?

regex - 如何在 bash 中使用 sed 按节获取 ini 文件的一部分

vim - 删除所有以日期时间开头且不包含类名的行

awk - 使用awk打印一行中特定索引的字符

c# - 如何在 C# 中复制 tabPage?

linux - sed 打印替换行两次

linux - awk group by 并在符合条件时打印

shell - 根据公共(public)字段将多行变成一行(分组依据)

Python json 解析器允许重复键