我想提取包含特定字段中特定值的行,并且我想使用变量:
这是我的logfile.txt:
165524401 ftr 996544 HGF57 00007654 9744456666 2014100812204920141008122054
165524711 sft 776445 HGF865 00007874 66677776 2014100812204920141008122054
165524700 sft 7765445 HG665 00007874 66677776 2014100812204920141008122054
165524510 sft 776545 HGhhg65 00007874 66677776 2014100812204920141008122054
165524711 abc 776445 HGF865 00007874 66677776 2014100812204920141008122054
165524701 abc 776445 HGF865 00007874 66677776 2014100812204920141008122054
我想在检查这个条件后只提取行
字段1 $ 1以O1或11结束。
字段2 $ 2不等于abc。
字段7以已声明的变量的值
开头这是我的代码:
var = 20141008
awk -F' *\\| *' 'FNR==NR { ($1 end with 01 || $1 end with 11) && $2!="abc" && $7 ~ /^ *$var/) ' logFile.txt
答案 0 :(得分:0)
awk -v var=$var '$1~/[01]1$/ && $2!~/^abc$/ && $7 ~ var' inputfile
将产生输出
165524401 ftr 996544 HGF57 00007654 9744456666 2014100812204920141008122054
165524711 sft 776445 HGF865 00007874 66677776 2014100812204920141008122054
它做什么?
-v var=$var
创建变量var
并将shell变量$var
的值传递给它。
$1~/[01]1$
选择以01
或11
$2!~/^abc$
选择包含$2
abc
行
$7 ~ var
检查var
中是否存在变量$7
模式中的模式
现在,如果您希望$7
以var
中的值开头,则必须将变量初始化为
var='^20141008'