İki dosyanın başlarını bash ile karşılaştırın


11

Yapabileceğim diff filea filebdosyalar arasındaki farkı görmek için. Ben de head -1 fileafilea veya fileb ilk satırını görmek için yapabilirim. Filea'nın ilk satırı ile fileb'in ilk satırı arasındaki farkı göstermek için bu komutları nasıl birleştirebilirim?

Yanıtlar:


22

Kabuğunuz işlem değiştirmeyi destekliyorsa , şunları deneyin:

diff <(head -n 1 filea) <(head -n 1 fileb)

Bir yerde işlem alt komutunu görmüştüm, ama ne yaptığını bilmiyordum. Teşekkürler !
edi9999

6

Her dosyanın yalnızca ilk satırını karşılaştırıyorsanız, belki de satır içindeki kelime düzeyinde değişiklikleri önemsersiniz dwdiff:

dwdiff <(head -n 1 filea) <(head -n 1 fileb)

dwdiff-cdeğiştirilen kelimeleri renklendirmek gibi bazı güzel seçeneklere sahiptir .

Veya sedkafa yerine kullanarak :

dwdiff <(sed 1q filea) <(sed 1q fileb)

bu kafa için el kafa sözdizimi zamanla değiştiğini olarak göstermektedir, kafa daha taşınabilir head -1vshead -n 1

Ayrıca, değişiklikleri daha az yazarak sadece göz küresi yapabilirsiniz:

head -n1 -q filea fileb

kolay görsel karşılaştırma için iki çizgiyi diğerinin altında görüntüler.


0

Kullanabilirsiniz:

if [ "`head -1 file1`" == "`head -1 file2`" ]; then echo "the same"; fi

2
Dosya1 boş bir dosyaysa (veya okunamıyorsa) ve dosya2'nin ilk satırının boş olması durumunda "aynı" yanıtını vereceğini unutmayın.
Stéphane Chazelas

Bu yöntemin 'salak kanıtı' olduğunu söylemedim ama hızlıca iki dosyanın ilk satırını eşleştirmek istiyorsanız ...
Lambert
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.