当前位置:首页 » 网页前端 » shell脚本三个文件逐行对比
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

shell脚本三个文件逐行对比

发布时间: 2023-01-17 17:53:23

‘壹’ 用shell脚本实现两个文件比较

[root@localhostxly]#lla.txtb.txt
-rw-r--r--1rootroot28Jul1315:00a.txt
-rw-r--r--1rootroot30Jul1315:00b.txt
[root@localhostxly]#cata.txt
hello
123
thisisa.txt
456
[root@localhostxly]#catb.txt
hello!
123
thisisb.txt
4567
[root@localhostxly]#diffa.txtb.txt
1c1
<hello
---
>hello!
3,4c3,4
<thisisa.txt
<456
---
>thisisb.txt
>4567

1c1就是指2个文件第一行不一样
<指的是a.txt
>指的是b.txt

‘贰’ 用shell脚本编写一个函数,调用两个数据文件的逐行数据(每一行有两个数据)作为变量来计算,怎么编写

function fname(){
...
}

while read line
do
num1=`echo $line | awk '{print $1}'`
num2=`echo $line | awk '{print $2}'`
fname $num1 $num2
done < $file

‘叁’ shell脚本,一行一行比较两个文本文件。 shell脚本,对一行一行读取文本文件得到的那一行数据进行字符串

没明白你的意思,就写了一个判断两个文件对应行是不是相同。在线的话就追问我。
line=`cat file1|wc -l`
for ((i=1;i<=$line;i++));do
file1=`awk 'NR="'$i'"{print $0}'` file1
file2=`awk 'NR="'$i'"{print $0}'` file2
if [ $file1 == $file2 ];then
echo line $i looks same!
else
echo line $i looks different!
fi
done

‘肆’ shell如何同时读取两个序列文件进行比对

首先要让原始文件中的重复行只出现一次并将结果保存到两个新文件(uniq1和uniq2)中。
再逐行读取两个新文件内容并使用for循环嵌套,遍历进行字段比较,将两个新文件相同内容输出到thesame文件,再在两个新文件中使用sed命令将换行的空格替换成 |,进一步反向过滤掉thesame文件内容就分别得到了两文件的独有内容。由于thesame文件使用了追加的方式,如果第二次执行脚本就会将新的内容追加到第一次执行内容之后,而不能单独得出第二次比对的结果,所以在开头设定如果之前有脚本运行产生的thesame文件存在,那么就删掉该文件重新建立新的文件,这样第二次文本对比的结果就不会受第一次的影响。