Grep 与正则表达式

Grep with regex expression

我需要第四个和第五个“|”之间的内容在以 FHEAD 开头的所有行上。目标是应用grep中的正则表达式读取文件。

我有这样的表达 returns 所有内容在“|”之间

(?<=\|)(.*?)(?=\|)

下面示例中的目标是 return

1047
8401-

FHEAD|1|PRMPC|20200217103050|1047|S
TMBPE|FHEAD|2|MOD
FHEAD|3|8401|230008|8401-|8401-Dcto|8401-Dcto 10FHEAD|1|235211|20190206000001|20190402235959|2||1||8||
TPGRP|4|240184
TGLIST|5|235213||||FHEAD
TLITM|6|101029605
TLITM|7|FHEAD101052978

有人可以帮助我吗?

提前致谢

awk -F '|' '=="1047" || =="8401-"{ print [=10=] }"  inputfile.txt

上面会在输入文件的第五列找到“1047”或“8401”"inputfile.txt"

grep -E "\|1047\||\|8401-\|" inputfile.txt

上面将对 grep 做同样的事情(但这不限于第 5 列。

编辑: 我一定是错过了 'starting with FHEAD'.....

awk -F\| '/^FHEAD/{ print  }'  inputfile.txt

或使用 grep

grep -e '^FHEAD|\(.[^|]*|\)\{3\}\(.[^|]*\)' -o inputfile.txt | grep  '.[^|]*|*' -o | grep -v '|$'

grepcut 的组合:

grep -e '^FHEAD' inputfile.txt | cut -d'|' -f 5

在以FHEAD开头的行上打印第五个字段(非空)的内容:

awk -F'|' '=="FHEAD" && !=""{print }' file