- 论坛徽章:
- 0
|
两个文件之间的替换如何写?
楼上的兄弟有点误解了吧。
看看worker兄的代码:
- awk 'BEGIN{FS=OFS=","} {gsub(/[^a-z,0-9]/,"")} NR==FNR{a[$1]=$2} NR>FNR{print $1,a[$2],a[$3]} ' file2 file1
复制代码
分解一下吧:
BEGIN{FS=OFS="," } -----输入域和输出域分隔符为 ,逗号
{gsub(/[^a-z 0-9]/,"" } ----- 将所有非字符和数字去掉
NR==FNR{a[$1]=$2} -----NR的记录是file1加file2的行数,这个case是从1一直到10,现在我们看看NR和FNR有什么区别
- [root@linux9 awk]# awk '{print NR, FNR}' file2 file1
- 1 1
- 2 2
- 3 3
- 4 4
- 5 5
- 6 6
- 7 1
- 8 2
- 9 3
- 10 4
复制代码
这下就明白了吧。
然后FNR先读file2将 file2中的$2列读到a这个数组里面,变成了
a[001]=bj
a[0002]=tj
a[0003]=sh
这样的象二维表了,查起来就方便了。
NR>FNR{print $1,a[$2],a[$3]}-------如果读完file2文件了,自然NR值要大于FNR了,所以就要查表显示file1文件了。 |
|