在两个同名字符串之间解析的awk脚本

在两个同名字符串之间解析的awk脚本,awk,Awk,假设我有一篇这样的文章 你好,12345 这会很有趣的 ABC:172-1345, 172-1323 这里有更多的线。 你好,34567 这可不好玩 美国广播公司:172-2345 这里有更多的绳子 输出应该是 12345 ABC:172-1345 34567 ABC:172-2345 我们能在awk中实现这一点吗? 我们还必须考虑最后一个hello,因为它不会有另一个hello来结束解析字符串。 最简单的是: awk -v RS=Hello, 'NR != 1 { print $1, $NF

假设我有一篇这样的文章

你好,12345 这会很有趣的 ABC:172-1345, 172-1323 这里有更多的线。 你好,34567 这可不好玩 美国广播公司:172-2345 这里有更多的绳子 输出应该是

12345 ABC:172-1345 34567 ABC:172-2345 我们能在awk中实现这一点吗? 我们还必须考虑最后一个hello,因为它不会有另一个hello来结束解析字符串。

最简单的是:

awk -v RS=Hello, 'NR != 1 { print $1, $NF }'
这会将文件拆分为以Hello分隔的记录,并打印每个记录中的第一个和最后一个标记。NR==1被排除,因为它是第一个Hello之前的空位


请注意,多字符RS并不严格符合POSIX,尽管最常见的AWK mawk和gawk都接受它。

这一点相当广泛。你能指定这里的基本算法和模式吗?你好,数字+一行+ABC:数字还是更复杂的?
$ awk -v RS= '{print $2,$NF}' file
12345 ABC:172-1345
34567 ABC:172-2345