GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana membedakan hanya baris pertama dari dua file?

Ini dia:

diff <(head -n 1 file1) <(head -n 1 file2)

(ini tidak akan menghasilkan apa-apa).

diff <(head -n 2 file1) <(head -n 2 file2)

Returns:
2c2
< 1
---
> 3

Anda dapat memasukkannya ke dalam skrip untuk melakukan hal-hal yang Anda sebutkan.

#!/bin/bash

fileOne=${1}
fileTwo=${2}
numLines=${3:-"1"}

diff <(head -n ${numLines} ${fileOne}) <(head -n ${numLines} ${fileTwo})

Untuk menggunakannya, cukup buat skrip dapat dieksekusi dengan chmod +x nameofscript.sh dan kemudian untuk mengeksekusi, ./nameofscript.sh ~/file1 ~/Docs/file2 Itu menyisakan # baris default pada 1, jika Anda ingin lebih banyak, tambahkan nomor di akhir perintah itu.

(Atau Anda dapat beralih dalam skrip Anda dengan -f1 file1 -f2 file2 -n 1, tetapi saya tidak ingat di atas kepala saya pernyataan kasus untuk itu).

head mengembalikan dari awal # baris seperti yang disarankan oleh -n . Jika Anda ingin melakukan kebalikannya, itu akan menjadi tail -n ${numLines} (ekor melakukan dari ujung ke belakang jumlah baris).

Sunting 10/5/16:

Ini khusus untuk Bash (dan shell yang kompatibel). Jika Anda perlu menggunakan ini dari sesuatu yang lain:

bash -c 'diff <(...) <(...)'

Linux
  1. Cara Menemukan File di CentOS 8 di Command Line

  2. Bagaimana Cara Menyisipkan Teks Sebelum Baris Pertama Sebuah File?

  3. Bagaimana Cara Mendapatkan Hitungan File Dalam Direktori Menggunakan Baris Perintah?

  1. Bagaimana cara membagi file dan menyimpan baris pertama di setiap bagian?

  2. Cara mendapatkan perbedaan (hanya penambahan) antara dua file di linux

  3. cara menggabungkan dua file secara konsisten baris demi baris

  1. Menemukan File di Command Line (Cara)

  2. Diff Reports Dua File Berbeda, Meski Sama!?

  3. Bagaimana saya bisa membedakan dua file XML?