gpt4 book ai didi

linux - 如何根据输入命令在字符串中搜索和打印单词?

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:13 25 4
gpt4 key购买 nike

我在文件中有一个数据,需要根据输入命令提取特定元素。

示例:文件中的数据如下所示:

NM1*IL*1*JESSI*PINKMAN*XM*SIRUS~
NM1*IL**WALTER*WHITE*XM*PANDORA*EM*ARIZONA~

输入命令:

NM1*IL*XM*

预期输出:

SIRUS
PANDORA

输入指令:

NM1*IL*EM*

预期输出:

ARIZONA

我有提取段的代码。

grep -P -o '(?<=NM1[* ]IL).*?(?=~)'

这段代码给出了NM1*IL和~之间的数据

*1*JESSI*PINKMAN*XM*SIRUS
**WALTER*WHITE*XM*PANDORA*EM*ARIZONA

现在我必须再次在此输出中搜索字符串 XM 并获取 XM 旁边的数据*所以我附加了如下代码

grep -P -o '(?<=NM1[*]IL).*?(?=~)' | grep -P -o '(?<=XM[*]).*?(?=[*]ORNULL)' 

不确定如何将结束字符串设置为 * 或 ENDOFLINE

最佳答案

我正在使用 sed 命令来解决这个问题

grep -P -o '(?<=NM1[* ]IL).*?(?=~)' 文件.txt | sed -ne 's/$/EOLINE&/p' | grep -P -o '(?<=XM[ * ]).*?(?=[ * ]|~|EOLINE)'

命令解释命令

grep -P -o '(?<=NM1[* ]IL).*?(?=~)' FILE.txt

在 NM1* IL 和 ~ 之间提取数据

sed -ne 's/$/EOLINE&/p'

grep 输出的 sed 后缀 EOLINE

grep -P -o '(?<=XM[* ]).*?(?=[ * ]|~|EOLINE)'

再次获取 XM* 和 (* or ~ or EOLINE) 之间的数据

关于linux - 如何根据输入命令在字符串中搜索和打印单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57256792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com