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.