2 dosya arasındaki farkı nasıl verebilirim?


11

Dosyam aşağıdakilerden oluşur; kabaca:

username:username:username:username:username 

Yukarıdaki satır yaklaşık 600 karakter devam ediyor.

Kullandığım awkkomut satırından gönderilen bir API / HTTP istek bir argüman olarak kullanmak amacıyla komutu.

Komutumu , beni takip eden kullanıcı hesaplarının bir listesini almak için kullanıyorum ve her 24 saatte bir, sabit diskimdeki orijinal listeyi yeni çıkan kullanıcı adı listesiyle karşılaştırarak (ve artık kimin takip etmediğini yankılayarak) beni . her kullanıcı adı test .. bash kullanarak bir döngü içine benim mantığını gerekecektir.

Şu anki senaryom:

user=$(awk -F: '{ print $1 }' FILE)  # Grab $User to use as an argument.  
following=$(exec CURRENT_FOLLOWERS) # Outputs the new file

echo "X amount of users are following you on 78B066B87AF16A412556458AC85EFEF66155"  

          SAVE CURRENT FOLLOWERS TO NEW A FILE.  


if [[ DIFFERENCE IS DETECTED ]] ; then    

          echo -ne "$User NO LONGER FOLLOWING YOU\r"

   else echo -ne "This user is following you still.\r"
fi

Sorum şu;
2 dosya arasındaki farkı nasıl verebilirim?


Bilirsin diff, değil mi?
schaiba

@schaiba Teşekkür ederim. Sadece başka bir forumda rastladı, harika çalışıyor. Bundan önce tökezlememiştim. Umarım bu cevap diğer üyelerin gelecekteki sorguları için faydalıdır.
Ben

@schaiba buna da cevap verebilir. Alanlar değil çizgiler üzerinde fark çalışma ile uğraştığınızdan emin olun .
terdon

Yanıtlar:



14

Sıralanmamış kullanıcı listeleri içeren iki dosya verildi, ör.

In file1:
    userD
    user3
    userA
    user1
    userB

ve

In file2:
    user3
    userB
    userX
    user1

Sonra kullanıcıların basit bir listesini almak için file1değil de file2, yapabileceğiniz

$ comm -23 <(sort file1) <(sort file2)
userA
userD

ve benzer şekilde kullanıcıların almak için file2değil defile1

$ comm -13 <(sort file1) <(sort file2)
userX

Liste dosyaları zaten sıralandıysa, bunlar sırasıyla comm -23 file1 file2ve için basitleştirilebilir comm -13 file1 file2.


1
commSıralama yapmadan kullanmak mümkün müdür ? Benim metin dosyası vardır değerler gibi 1, 2, 01, 02, 0000, 0001, 0002, vb kullanma sortde-sort olacaktır düzeni ...
Lanti

6

Dosya içeriğindeki farkı görüntülemek için en iyi komut

vim -d file1 file2

3

diff [options] from-file to-file

diffdosyadan dosyaya iki dosyanın içeriğini karşılaştırır. Durumunda -ideğişiklikleri yoksayan seçeneği belirleyebilirsiniz ; büyük ve küçük harfleri eşdeğer düşünün.

Daha fazla bilgi için bu bağlantıya başvurabilirsiniz: http://www.computerhope.com/unix/udiff.htm ya da kılavuz sayfasına bakabilirsiniz.


2

fcUnix ve Linux'taki komut gibi komutları da deneyebilirsiniz diff <file_new> <file_old>.

Bunların önündeki +++veya ---önündeki hat değişti ve hayır olan +'sve değişmeyen hat -'sdeğişti

İşaretli satırlar -yeni dosyadan kaldırılır, ancak eski sürümde var olurlar

İşaretli satırlar +yeni dosyaya eklenir, ancak dosyanın eski sürümünde bulunmazlar

Linux gösterimi

Linux > ve<

>eski dosyadan <gelen satır anlamına gelir eski dosyadan değiştirilen yeni dosyadan satır anlamına gelir


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.