- 论坛徽章:
- 0
|
回复 7# yinyuemi
谢谢解答,下面我对具体的命令庖丁解牛啊
-bash-3.2$ more test1 test2
::::::::::::::
test1
::::::::::::::
a :1
b:y:2
c:z:3
d:a:3
::::::::::::::
test2
::::::::::::::
x:pwd1
z:pwd3
y:pwd2
-bash-3.2$
awk -F [":"] 'NR==FNR {a[$1]=$2} NR!=FNR {print $1":"a[$2]}' test2 test1 | awk -F [":"] '{if(length($NF)==0) print $1":null"; else {print}}'
我是这样理解的,如果有错误请予以更正
awk -F [":"] 分隔符为:
'NR==FNR 第一个文件
{a[$1]=$2} 第一个文件(test2)以:分割的第二个域放到以第一个域为下标的数组a中 如a[x]=pwd1 a[y]=pwd2
NR!=FNR 第二个文件
{print $1":"a[$2]}' 这里的$1是第二个文件的 如a , b , c 这时候的a[$2] 是以第二个文件(test1)的第二个域为数组的下标到数组a中搜索,第二个文件的第二个域是x y z,这时候就找到了数组中对应的a[x] a[y]中存储的值,如果没找到也没关系
test2 第一个文件
test1 第二个文件
| 结果输出来继续处理
awk -F [":"]
'{if
(length($NF)==0) 判断最后一个域的长度是否为0
print $1":null"; 如果有最后一个域的长度为0,打印null
else
{print} 否则打印全部
}' |
|