Mi archivo de texto no tiene delimitador para especificar separadores solo espacios, ¿cómo corto la columna 2 al archivo de salida,
39 207 City and County of San Francisc REJECTED MAT = 0
78 412 Cases and materials on corporat REJECTED MAT = 0
82 431 The preparation of contracts an REJECTED MAT = 0
Entonces la salida que necesito es
207
412
432
fuente
cat ... |
rara vez es necesario. La mayoría de los comandos de Unix, comocut
tomar uno o más archivos de entrada como argumentos, por ejemplocut -d" " -f5 columns.txt
.como @jimmij dijo,
awk '{print $2}' file
es la respuesta más simple.Si, por alguna razón, no desea usar
awk
e insiste en usarcut
, puede usarsed
para convertir cada instancia de dos o más espacios en una sola pestaña (cut
delimitador predeterminado) antes de cortar en corte:fuente
Todavía puede usar espacios individuales como delimitador, solo tendrá más columnas. Aumente el valor que le da
cut -d' ' -f
de 2 a 5, o tal vez 6. Incremente el número hasta obtener los resultados deseados.fuente
El anterior es muy útil cuando las utilidades de Linux como awk para extracción de datos no funcionan si está cambiando a usuario "root" dentro de un script de shell como el siguiente:
fuente
awk
no funcionará" en su ejemplo es que el documento aquí no está entre comillas, lo que significa$2
que el shell lo expandirá al segundo parámetro posicional. La solución probablemente no sea cambiar a ungrep
comando, sino escapar del$
in$2
como\$2
o simplemente citar todo el documento utilizando<<'EOF'
en lugar de<<EOF
. También tenga en cuenta que la tarea en su ejemplo se lleva a cabo más simplemente porpgrep
.