[英]How to print files names from file where awk is selecting values?
我有一个.txt文件,其文件名为
z1.cap
z2.cap
z3.cap
z4.cap
这些文件中的示例数据如下所示,
OTR 25896 PAT210 $TREMD DEST
OFR 21475 NAT102 #TREMD DEST
然后我使用下面的代码从文件中打印所需的值。
while read file_name
do
echo "progressing with file :${file_name}"
cat ${file_name} | grep "PAT210" | awk -F' ' '$5 == "(DEST" { print $file_name, $1}' | uniq >> OUTPUT_FILE
现在我想要包含2个字段的输出,
z1.cap OTR
z2.cap OFR
等等...
但是我越来越喜欢
- OTR
- OFR
感谢您的任何帮助,谢谢。
要访问awk当前正在处理的文件名,请使用内置变量FILENAME
要将外壳中的其他外壳变量绑定到awk中的变量,请使用:
awk -v var1=$shvar1 -v var2=$shvar2 'your awk code using var1 and var2'
假设files.txt
包含文件列表,并且对要实现的目标完全不了解:
for file_name in $(cat files.txt)
do
echo "progressing with file :${file_name}"
awk -F' ' '($5 == "DEST") && ($3=="PAT210") { print FILENAME, $1}' $file_name | uniq >> OUTPUT_FILE
done
我删除了猫,并将grep合并到您的awk中。 猫是不必要的,因为awk可以读取文件本身。
您可以通过说完全删除for循环
awk -F' ' '($5 == "DEST") && ($3=="PAT210") { print FILENAME, $1}' $(<files.txt) | uniq >> OUTPUT_FILE
$(<files.txt)
将把每个文件名发送到awk。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.