2015-04-17 60 views
0

比方说我们我有这样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来拥有结束分析字符串。

+5

这是相当广泛的。你能指定什么是底层算法和模式吗? '你好,DIGIT' +一行+ ABC:NUMBER'或者更复杂的东西? – fedorqui

回答

0

最简单的:

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

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

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

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