我应该从多个文件中过滤记录。文件由|
分隔。在第24个字段,我将按“9120”过滤记录。我该如何使用bash脚本过滤文件?
20|09328833007|0|0|9222193385|0|GS|515051032704315|0|*HOME||20140311|101640|0|0|||12|18|0|0|1||3100|00886FC0||0|0|| |||N|N|||N||||N|||||| 301131301|||||||||||11|0||00|FF|11|FF|140311101640|352912058113130000||CEBS1|MSH15
答案 0 :(得分:2)
使用awk更简洁的方式:
awk '$24=="9120"' FS='|' file*
使用变量输入:
awk -v col=24 -v value="9120" '$col==value' FS='|' file*
答案 1 :(得分:1)
awk对于处理这样的文件非常有用。您将FIELD SEPARATOR
设置为|
:
要打印第24个字段:
$ awk -F '|' '{ print $24 }' sample.txt
3100
打印第24个字段为您指定值的行:
awk -F '|' '$24=="9120" { print; }' sample.txt
答案 2 :(得分:0)
试试这个:
cat file* | awk -F"|" '$24=="9120" {print $0}'