gpt4 book ai didi

sed - 提取字符串之间的子字符串

转载 作者:行者123 更新时间:2023-12-03 23:32:57 27 4
gpt4 key购买 nike

我有一个文本如下的文件:

###interest1 moreinterest1### sometext ###interest2###
not-interesting-line
sometext ###interest3###
sometext ###interest4### sometext othertext ###interest5### sometext ###interest6###

我想提取 ### 之间的所有字符串。

我想要的输出是这样的:

interest1 moreinterest1
interest2
interest3
interest4
interest5
interest6

我尝试了以下方法:

grep '###' file.txt | sed -e 's/.*###\(.*\)###.*/\1/g'

这几乎可以工作,但似乎每行只抓取第一个实例,所以我输出的第一行只抓取

interest1 moreinterest1

而不是

interest1 moreinterest1
interest2

最佳答案

这里有一个 awk 命令来实现这一点,它使 ### 字段分隔符并打印每个偶数字段:

awk -F '###' '{for (i=2; i<NF; i+=2) print $i}' file

interest1 moreinterest1
interest2
interest3
interest4
interest5
interest6

这是一个替代 grep + sed 解决方案:

grep -oE '###[^#]*###' file | sed -E 's/^###|###$//g'

这假设 ### 标记之间没有 # 字符。

关于sed - 提取字符串之间的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68118055/

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