1

我下面有一个字符串

属性 | 账户属性 | 动作属性 | 周年物业 | 应用属性 | AssistantName 属性 | AssistantDNA 财产 | 实验室DNA……

并且从 linux shell 想找到一个命令来将其处理为以下格式。我只想显示其中包含 DNA 的单词。对我来说,这里的重点是从提示中了解如何做到这一点。

AssistantDNA
LabDNA
4

5 回答 5

4

awk选择:

awk -v RS='|' '/DNA/'
于 2012-07-30T15:17:59.870 回答
3
echo "Properties | Account Property | Actions Property | Anniversary Property | Application Property | AssistantName Property | AssistantDNA Property | LabDNA" | tr '|' '\n' | grep DNA

印刷

AssistantDNA Property 
LabDNA

首先用|新行替换,然后使用普通的 grep。

于 2012-07-30T15:41:08.563 回答
2

也许是这样的:

egrep -oi '[^ ]*dna[^ ]*' file
于 2012-07-30T14:20:36.807 回答
2

使用扩展正则表达式

假设您的数据位于名为/tmp/foo的文件中,您可以使用egrepgrep -E(取决于您的系统)使用扩展正则表达式匹配您想要的单词:

egrep --only-matching --ignore-case '\b[[:alnum:]]+dna\b' /tmp/foo | sort

最后的排序管道将为您按字母顺序对结果进行排序。根据您提出的要求,这当然不是必需的。

于 2012-07-30T14:27:27.933 回答
2
grep -Po "\S*DNA\S*" yourFile

测试:

kent$  echo "Properties | Account Property | Actions Property | Anniversary Property | Application Property | AssistantName Property | AssistantDNA Property | LabDNA...."|grep -Po "\S*DNA\S*"
AssistantDNA
LabDNA....
于 2012-07-30T14:41:35.067 回答