GNU/Linux >> Znalost Linux >  >> Linux

Problém se skriptováním Bash – porovnat dva seznamy a vytvořit třetí?

Mám začátky skriptu, který dávám dohromady, abych zkontroloval hostitele Xen... tato otázka je skutečně dvojí. Nejprve mám níže uvedený fragment kódu;

TMPFILE001=/tmp/FILE001.rxTMPFILE002=/tmp/FILE002.rxTMPFILE003=/tmp/FILE003.rxxe vm-list params=uuid,is-control-domain | grep -B1 pravda | grep uuid | awk {'print $5'}> $TMPFILE001xe vm-list params=uuid --minimal | tr ',' '\n'> $TMPFILE002

Takže to mi dává dva seznamy, chci odstranit cokoli, co se objeví v FILE002.rx, z toho, aby se objevilo v FILE001.rx a poslat to do FILE003.rx.

V ideálním případě bych v tomto neměl vůbec žádné soubory, ale snažil jsem se to zprovoznit tím, že jsem se je snažil zachytit do proměnných.

Pokud je to možné, bylo by lepší nechat skript spustit, porovnat výstup dvou příkazů a zbytek zobrazit až poté, co byl výstup příkazu 2 odebrán z příkazu 1.

Výstup příkazu 1;

cat /tmp/FILE001.rx 468190e5-c78b-4337-8094-20638353b4705926bbf3-c48c-4c2a-8113-d7e58520cfe73f98a8-7preff25e8ee-79eff255 

Výstup příkazu 2 (oříznutý);

cat /tmp/FILE002.rx | head -537ae6b9e-8a00-ab10-7e17-3d70ab275b9bd8208537-0d69-1332-9301-4699d194430f1cf06668-5450-4d44-a7ba-c2c7b6bcd6b27d11c6e3-48ef-0e5e-c6ed-e8f2548533fd7d3d0ba3-a6d6-d2a7-99f0-06fa74e625fa

Přijatá odpověď:

Podívejte se na comm příkaz. Vezměte následující dva soubory

f1.txt

item1
item2
item3
item4
item5
item6
 

f2.txt

item1
item2
item22
item3
item4
 

Výstup

$ comm -23 f1.txt f2.txt
item5
item6
 

záznam manuálové stránky pro Comm


Linux
  1. Bash skriptování (I)

  2. Porovnat dva sloupce různých souborů a vytisknout, pokud se shodují?

  3. Jak porovnávat řetězce ve skriptování Bash Shell

  1. Jak porovnat dvě složky a zkopírovat rozdíl do třetí složky?

  2. Jak vytvářet a volat funkce v Bash

  3. Jak porovnat dva řetězce ve formátu verze oddělené tečkami v Bash?

  1. Bash:Zápis do souboru

  2. Skriptování Bash – smyčka dokud a dokud vysvětlená s příklady

  3. Chování polí ve skriptování bash a shellu zsh (počáteční index 0 nebo 1?)