O termo "campo" geralmente é associado a ferramentas como cut
e awk
. Um campo seria semelhante a uma coluna de dados, se você pegar os dados e separá-los usando um caractere específico. Normalmente, o caractere usado para fazer isso é um Espaço .
No entanto, como é o caso da maioria das ferramentas, é configurável. Por exemplo:
- awk =
awk -F"," ...
- separaria por vírgulas (ou seja, , ). - cut =
cut -d"," ...
- separaria por vírgulas (ou seja, , ).
Exemplos
Este primeiro mostra como awk
será automaticamente dividido em espaços.
$ echo "The rain in Spain." | awk '{print $1" "$4}'
The Spain.
Este mostra como o cut
também será dividido em espaços.
$ echo "The rain in Spain." | cut -d" " -f1,4
The Spain.
Aqui temos uma lista de dados da coluna CSV que estamos usando cut
para retornar as colunas 1 & 4.
$ echo "col1,col2,col3,co4" | cut -d"," -f1,4
col1,co4
Awk também pode fazer isso:
$ echo "col1,col2,col3,co4" | awk -F"," '{print $1","$4}'
col1,co4
O Awk também é um pouco mais apto a lidar com uma variedade de caracteres de separação. Aqui está lidando com Tabs junto com Espaços onde eles estão misturados ao mesmo tempo:
$ echo -e "The\t rain\t\t in Spain." | awk '{print $1" "$4}'
The Spain.
E o interruptor -s para cortar?
Com relação a essa opção, ele simplesmente informa cut
para não imprimir nenhuma linha que não contenha o caractere delimitador especificado por meio da opção -d
.
Exemplo
Digamos que tenhamos este arquivo.
$ cat sample.txt
This is a space string.
This is a space and tab string.
Thisstringcontainsneither.
NOTA: existem espaços e tabulações na segunda cadeia acima.
Agora, quando processamos essas sequências usando cut
com e sem a opção -s
:
$ cut -d" " -f1-6 sample.txt
This is a space string.
This is a space
Thisstringcontainsneither.
$ cut -d" " -f1-6 -s sample.txt
This is a space string.
This is a space
No segundo exemplo, você pode ver que a opção -s
omitiu todas as strings da saída que não contêm o delimitador, Espaço .