我正在尝试使用grep命令查找以下字符串:
行必须以15开头,其余部分可以是任意长度的管道之间的数字。最后两个管道之间不能有任何内容。
"15|155702|0101|1||"
目前我已经有:
grep "^15|" $CONCAT_FILE_NAME >> "VAS-"$CONCAT_FILE_NAME
在使用[0-9]
时,我遇到了指定数字长度的问题。
我正在尝试使用grep命令查找以下字符串:
行必须以15开头,其余部分可以是任意长度的管道之间的数字。最后两个管道之间不能有任何内容。
"15|155702|0101|1||"
目前我已经有:
grep "^15|" $CONCAT_FILE_NAME >> "VAS-"$CONCAT_FILE_NAME
在使用[0-9]
时,我遇到了指定数字长度的问题。
15|
开头,总共有5个管道符(|),最后两个管道符之间没有任何内容。第2、3和4个管道符之间可以有任意数量的数字。grep "^15\|[0-9]*\|[0-9]*\|[0-9]*\|\|$" $CONCAT_FILE_NAME >> "VAS-"$CONCAT_FILE_NAME
awk
。cat file
15|155702|0101|1||
15|155702|0101|1|test|
16|155702|0101|1||
awk -F\| '/^15/ && !$(NF-1)' file
15|155702|0101|1||
This prints a line only if it starts with 15
and the second last field, separated by |
is blank
So this would be:
VAS-CONCAT_FILE_NAME=$(awk -F\| '/^15/ && !$(NF-1)' <<<"$CONCAT_FILE_NAME")
Another shorter regex that would work
awk '/^15.*\|\|$/' file
This search for all lines starting with 15
and ends with ||
grep
可能更好,在其他情况下则是awk
:) - Jotne|
。grep -E '^15\|([[:digit:]]+\|)+\|$'