请教一个unix下shell问题:关于比较文件内容

2024-11-08 01:42:39
推荐回答(4个)
回答(1):

比较字母 如果2.txt中有和1.txt相同的内容 则用2.txt替换掉
如 c|999 替换 c|3
一个awk句即可解决:
awk -F'|' 'NR==FNR{a[FNR]=$1;b[FNR]=$2;c=FNR} NR>FNR{for(n=1;n<=c;n++) {if($1==a[n])print $1"|"b[n];else flag=1} if(flag==1)print}' 2.txt 1.txt
思路:
1)将2.txt的字母和数字部分分别读出,并存入数组a[]和b[]。
2)遍历1.txt时(awk以行为单位处理文本),与之前保存的2.txt的数组内容比较,字母部分相同则打印2.txt的行内容,否则打印1.txt的行内容。
---------------------------------------------------------------------------
比较字母 如果2.txt中有1.txt没有的内容 则插入1.txt
如 在1.txt 中插入 d|4
这个思路与上面是反的,要先遍历1.txt,将字母部分都保存到一个数组,然后再遍历2.txt,看数组中是否有没包含的字母。如果有,将字母和数字都存入另一个数组。最后将这另一个数组内容添加到1.txt后面。 需要按字母排序的话,用sort命令即可。

回答(2):

awk -F"|" '{a[$1]=$2}END{for(i in a) print i"|"a[i]}' file1 file2

满足需求的话,请及时点采纳谢谢。

回答(3):

使用diff命令

回答(4):

diff 文件1 文件2