GNU/Linux >> Znalost Linux >  >> Linux

Jak porovnat pouze první řádek dvou souborů?

Tady to je:

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

(to by nevrátilo vůbec nic).

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

Returns:
2c2
< 1
---
> 3

Můžete to začlenit do skriptu, abyste provedli věci, které zmiňujete.

#!/bin/bash

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

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

Chcete-li to použít, vytvořte skript spustitelný pomocí chmod +x nameofscript.sh a poté pro provedení ./nameofscript.sh ~/file1 ~/Docs/file2 To ponechá výchozí počet řádků na 1, pokud chcete více, přidejte na konec příkazu číslo.

(Nebo můžete ve skriptu provést přepínače pomocí -f1 soubor1 -f2 soubor2 -n 1, ale nepamatuji si, že by to bylo z hlavy).

head vrátí od začátku počet řádků, jak navrhuje -n . Pokud byste chtěli provést zpětný chod, bylo by to tail -n ${numLines} (ocas dělá od konce zpět počet řádků).

Upravit 10.5.2016:

To je specifické pro Bash (a kompatibilní shelly). Pokud to potřebujete použít z něčeho jiného:

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

Linux
  1. Rozdíl hlásí dva soubory se liší, ačkoli jsou stejné!?

  2. Jak rozdělit soubor a zachovat první řádek v každém z kusů?

  3. jak spojit dva soubory konzistentně řádek po řádku

  1. Hledání souborů v příkazovém řádku (jak na to)

  2. Jak mohu porovnat dva soubory XML?

  3. Jak provedu binární rozdíl na dvou stejně velkých souborech pod Linuxem?

  1. Jak najít soubory v CentOS 8 na příkazovém řádku

  2. Jak vložit text před první řádek souboru?

  3. Jak získat počet souborů v adresáři pomocí příkazového řádku?