GNU/Linux >> Linux Esercitazione >  >> Linux

Come differenziare solo la prima riga di due file?

Ecco qua:

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

(questo non restituirebbe nulla).

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

Returns:
2c2
< 1
---
> 3

Potresti incorporarlo in uno script per fare le cose che dici.

#!/bin/bash

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

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

Per usarlo, basta rendere eseguibile lo script con chmod +x nameofscript.sh e poi per eseguire, ./nameofscript.sh ~/file1 ~/Docs/file2 Ciò lascia il numero predefinito di righe su 1, se ne vuoi di più aggiungi un numero alla fine di quel comando.

(Oppure potresti cambiare il tuo script con -f1 file1 -f2 file2 -n 1, ma non ricordo nemmeno in cima alla mia testa l'istruzione case per questo).

head restituisce dall'inizio il numero di righe suggerito da -n . Se volessi fare il contrario, sarebbe tail -n ${numLines} (la coda restituisce dalla fine il numero di linee).

Modifica 5/10/16:

Questo è specifico per Bash (e shell compatibili). Se hai bisogno di usarlo da qualcos'altro:

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

Linux
  1. Trovare file nella riga di comando (come fare per)

  2. Come inserire del testo prima della prima riga di un file?

  3. Diff segnala due file differiscono, anche se sono gli stessi!?

  4. Come dividere un file e mantenere la prima riga in ciascuno dei pezzi?

  5. Come si esegue il diff di una directory solo per i file di un tipo specifico?

Come leggere i file riga per riga in Bash

Come cercare file dalla riga di comando di Linux

Come trovare file sulla riga di comando di Ubuntu

Come confrontare due file nel terminale Linux

Come scaricare file in Rocky Linux 8 sulla riga di comando usando wget

come posso differenziare due sezioni dello stesso file?