如何在 Unix 中模式搜索后打印下一个字符?

如何在 Unix 中模式搜索后打印下一个字符?

我的文件夹中有一堆文件,需要使用关键字“PO”和 SUPP 进行搜索,以在输出文件中打印下一个字符。请帮忙。

文件 1:

PO 0962690   SUPP  212055    20180820000000   8709384 PO 0962693   SUPP  212059    20180820000000   8709384 ACDEF 123456 85 PO 123456

文件2:

PO 0962709   SUPP  1527 20180820000000   8709403 

预期输出:

0962690,212055
0962693,212059
123456,
0962709,1527

答案1

grep -hPo '\bPO\s+\d+(\s+SUPP\s+\d+)?' file* | awk -v OFS=, '{print $2,$4}'

或者(甚至)更隐晦地

perl -nE 's/\bPO\s+(\d+)(?:\s+SUPP\s+(\d+))?/say "$1,$2"/ge' file

相关内容