traduccion ss64 commands linux shell command-line comm

linux - ss64 - ¿Cómo obtener la primera columna de salida de comunicaciones?



rm bash command (3)

"Así que estoy tratando de obtener la primera columna de salida de comunicaciones"

La primera columna de la salida " comm file1 file2 " contiene líneas únicas para file1 . Puede omitir el procesamiento posterior simplemente llamando a comm con -2 (suprimir líneas únicas para file2 ) y -3 (suprimir líneas que aparecen en ambos archivos).

comm -2 -3 file1 file2 # will show only lines unique to file1

Sin embargo, si no tiene más remedio que procesar una salida previa a la ejecución de comm , como mencionó Carl , cut sería una opción:

cut -f1 comm-results.txt

Sin embargo, esto resulta en líneas vacías para los casos en que la columna 1 está vacía. Para lidiar con esto, quizás awk puede ser más adecuado:

awk -F"/t" ''{if ($1) print $1}'' comm-results.txt ---- ---------------- | | Use tab as delimiter | +-- only print if not empty

Así que estoy tratando de obtener la primera columna de salida de comunicaciones usando awk . Leí que la pestaña se usaba como separador para la comunicación, así que lo hice:

awk -F"/t" ''{print $1}'' comm-result.txt

Con comm-result.txt que contiene la salida de:

comm -3 file1 file2

Pero esto no parece funcionar.

Esta recomendación también toma el carácter de espacio como separador y obtengo resultados extraños cuando mis archivos contienen múltiples espacios.

¿Cómo puedo obtener solo la primera columna de comm ?


Puede usar comm con -2 y -3 (como ya se explicó anteriormente ), o usar comm con grep como:

grep -o ''^/S/+'' <(comm file1 file2)

por lo que la salida no contendrá ningún espacio al final. Esto es útil para los comandos que no son de comm .


cut(1) es probablemente una mejor opción que awk para este problema.