我有以下格式的文件
value value 17 -1 1234 4567 value id1
value value 17 -1 2345 4580 value id1
value value 17 -1 2344 4654 value id1
value value 1 1 1234 4567 value id2
value value 1 1 3445 3455 value id2
value value 1 1 2341 2345 value id3
value value 1 1 1245 4567 value id3
value value 1 1 3234 5634 value id3
value value 1 1 3412 4512 value id3
我想为空白行之间的每组行检索以下信息:
例如对于id1:
17 -1 1234 4654 id1
表示id2:
1 1 1234 3455 id2
,即对于每个id(最后一列),我想检索该组中第一行的第5列和该组中最后一行的第6列(这些行按ID分组)。
答案 0 :(得分:1)
这样的事情可能会为你做的工作
$ awk '/^$/{print col3, col4, col5, col6, idval; next} $8 != idval{idval = $8; col3=$3; col4=$4; col5=$5} {col6=$6} END{print col3, col4, col5, col6, idval}' input
17 -1 1234 4654 id1
1 1 1234 3455 id2
答案 1 :(得分:1)
使用GNU awk
awk -vRS= -vFS='\n' '{split($1, a, /[[:blank:]]+/);
split($NF, b, /[[:blank:]]+/);
print a[3], a[4], a[5], b[6], a[8]}' file
17 -1 1234 4654 id1
1 1 1234 3455 id2
1 1 2341 4512 id3
答案 2 :(得分:1)
这是另一个awk
awk -vRS= '{print $3,$4,$5,$(NF-2),$8}' file
17 -1 1234 4654 id1
1 1 1234 3455 id2
1 1 2341 4512 id3
将每个块分成一个记录,然后打印字段3,4,5第三个和最后一个