如何使用bash脚本从文件中过滤记录

时间:2014-03-11 08:11:27

标签: bash unix

我应该从多个文件中过滤记录。文件由|分隔。在第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|MSH‌​15

3 个答案:

答案 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}'