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 '|$'
grep
和 cut
的组合:
grep -e '^FHEAD' inputfile.txt | cut -d'|' -f 5
在以FHEAD
开头的行上打印第五个字段(非空)的内容:
awk -F'|' '=="FHEAD" && !=""{print }' file
我需要第四个和第五个“|”之间的内容在以 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 '|$'
grep
和 cut
的组合:
grep -e '^FHEAD' inputfile.txt | cut -d'|' -f 5
在以FHEAD
开头的行上打印第五个字段(非空)的内容:
awk -F'|' '=="FHEAD" && !=""{print }' file