awk脚本在两个具有相同名称的字符串之间进行解析

时间:2015-04-17 13:22:06

标签: awk

让我们说我有这样的文字

Hello, 12345
      This is going to be fun
      ABC:172-1345,
           172-1323
      There is more string here.

Hello, 34567
     This is not going to be fun
      ABC:172-2345
     There is more string here 

输出应该是

12345 ABC:172-1345
34567 ABC:172-2345

我们可以在awk中实现这一目标吗? 我们还必须考虑最后一个Hello,因为它不会有另一个Hello来获得结束解析字符串。

2 个答案:

答案 0 :(得分:0)

最简单:

awk -v RS=Hello, 'NR != 1 { print $1, $NF }'

这会将文件拆分为由Hello,分隔的记录,并打印每条记录中的第一个和最后一个标记。 NR == 1被排除在外,因为它是第一个Hello,之前的空位。

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

答案 1 :(得分:0)

$ awk -v RS= '{print $2,$NF}' file
12345 ABC:172-1345
34567 ABC:172-2345