Wie kann ich Comm auf diese Weise nutzen?

Wie kann ich Comm auf diese Weise nutzen?

Nach meinem Verständnis möchte ich verwenden comm -23 file1 file2. Datei1 ist das Ergebnis von findund Datei2 ist cut -c43- list. Ist es möglich, dass ich dies als 1 Zeile schreibe und keine Dateien verwende (außer der, die ich als Liste bezeichnet habe)?

Antwort1

Hier ist die Prozesssubstitution Ihr Freund:

$ comm -23 <(find /dir -name 'something') <(cut -c43- list)

Das Format <(command)wendet einen temporären Dateideskriptor an commandund das Ganze <( )wird als Dateieingabe für comm(oder jeden anderen Befehl) verwendet.
Siehemehr zur Prozesssubstitution hier. Siehe auch man bash:

Prozessersetzung
Prozessersetzung ermöglicht es, auf die Eingabe oder Ausgabe eines Prozesses über einen Dateinamen zu verweisen. Sie hat die Form <(Liste) oder >(Liste). Der Prozess Liste wird asynchron ausgeführt und seine Eingabe oder Ausgabe erscheint als Dateiname. Dieser Dateiname wird als Ergebnis der Erweiterung als Argument an den aktuellen Befehl übergeben. Wenn die Form >(Liste) verwendet wird, liefert das Schreiben in die Datei eine Eingabe für Liste. Wenn die Form <(Liste) verwendet wird, sollte die als Argument übergebene Datei gelesen werden, um die Ausgabe von Liste zu erhalten. Prozessersetzung wird auf Systemen unterstützt, die benannte Pipes (FIFOs) oder die /dev/fd-Methode zum Benennen offener Dateien unterstützen.

verwandte Informationen