Como usar o grep na coluna?

2

Eu quero aplicar o grep em colunas específicas no comando de coluna.

myfile.txt

3,ST,ST01,3,3,856
3,ST,ST02,4,9,0234
6,N1,N101,2,3,ST
6,N1,N102,1,60,Comcast
6,N1,N103,1,2,92

Meu comando:

column -s, -t < myfile.txt | grep -w "ST"

Aqui quero apenas grep o padrão ST na segunda coluna. Como fazer isso?

Resultado esperado:

3       ST            ST01              3            3            856
3       ST            ST02              4            9            0234
    
por rajagopalx 10.01.2017 / 17:42

3 respostas

6

Sem fazer um RegEx sofisticado no qual você conte vírgulas, é melhor usar awk para esse problema.

awk -F, '$2=="ST"'
  • O parâmetro -F, especifica o delimitador, que é definido como uma vírgula para seus dados.
  • $2 refere-se à segunda coluna, que é o que você deseja combinar.
  • "ST" é o valor que você deseja corresponder.
por 10.01.2017 / 17:47
4

Obtenha ST na coluna 2 ( -E e {1} podem ser omitidos aqui):

grep -E '^([^,]*,){1}ST[^,]*' file

Saída:

3  ST  ST01  3  3  856
3  ST  ST02  4  9  0234

Obtenha ST na coluna 6:

grep -E '^([^,]*,){5}ST[^,]*' file | column -s, -t

Saída:

6  N1  N101  2  3  ST
    
por 10.01.2017 / 18:06
0

Usando awk , podemos selecionar a coluna desejada

column -s, -t < myfile.txt | awk '$2 == "ST"'

Se a variável do shell for usada,

seg="ST"
column -s, -t < $ST_FILE | awk -v var="$seg" '($2 == var)'
    
por 10.01.2017 / 17:46

Tags