Czy można sprawdzić, czy pierwszy wiersz dwóch plików jest równy przy użyciu diff
(lub innego łatwego polecenia bash)?sprawdzanie równości części dwóch plików
[Ogólnie sprawdzanie równości pierwszych/ostatnich k
linii, a nawet linie i do j]
Czy można sprawdzić, czy pierwszy wiersz dwóch plików jest równy przy użyciu diff
(lub innego łatwego polecenia bash)?sprawdzanie równości części dwóch plików
[Ogólnie sprawdzanie równości pierwszych/ostatnich k
linii, a nawet linie i do j]
Aby Diff pierwsze linie K dwóch plików:
$ diff <(head -k file1) <(head -k file2)
Similary, aby Diff ostatnią k linie:
$ diff <(tail -k file1) <(tail -k file2)
do diff linii i do j:
diff <(sed -n 'i,jp' file1) <(sed -n 'i,jp' file2)
poniższe polecenie wyświetla pierwszy wiersz obu plików.
krithika.450> head -1 temp1.txt temp4.txt
==> temp1.txt <==
Starting CXC <...> R5x BCMBIN (c) AB 2012
==> temp4.txt <==
Starting CXC <...> R5x BCMBIN (c) AB 2012
Poniżej komenda wyświetla wartość Tak, jeśli pierwszy wiersz w obu plikach jest równy.
krithika.451> head -1 temp4.txt temp1.txt | awk '{if(NR==2)p=$0;if(NR==5){q=$0;if(p==q)print "yes"}}'
yes
krithika.452>
Moje rozwiązanie wydaje się raczej proste i początkujący w porównaniu do dogbane na wyżej, ale tutaj jest wszystko jedno!
echo "Comparing the first line from file $1 and $2 to see if they are the same."
FILE1=`head -n 1 $1`
FILE2=`head -n 1 $2`
echo $FILE1 > tempfile1.txt
echo $FILE2 > tempfile2.txt
if diff "tempfile1.txt" "tempfile2.txt"; then
echo Success
else
echo Fail
fi
Moje rozwiązanie wykorzystuje program zbierania patchutils programu filterdiff. Poniższe polecenie pokazuje różnicę między plikiem1 i plikiem2 od numeru linii j do k:
diff -U 0 file1 file2 | filterdiff --lines j-k
Co oznacza "p" w "i, jp"? –
'p' oznacza druk. – dogbane
i aby sprawdzić równość: 'if diff ...; następnie echo "równe"; inaczej echo "nie równe"; fi' –