Eu tenho um arquivo de texto onde o número da coluna e da linha sempre varia e quero remover linhas inteiras do arquivo txt somente se cada coluna dentro dele for igual a $ VAR1 ou $ VAR2. Por exemplo:
Digamos $VAR1="X" e $VAR2="N" e eu quero remover qualquer linha em que $VAR1 e $VAR2 compõem a coluna inteira.
Esta seria minha entrada:
hajn 32 ahnnd namm 5 543 asfn F
X X N X X X N X
5739 dw 32eff Sfff 3 asd 3123 1
E esta seria a minha saída desejada:
hajn 32 ahnnd namm 5 543 asfn F
5739 dw 32eff Sfff 3 asd 3123 1
Eu posso resolver isso com um loop, mas eu queria saber se existe uma maneira poderosa de fazer isso, de preferência awk.
Aqui, transferimos os valores
$VAR1
e$VAR2
para nossoawk
script curto e suas variáveisa
e usando a linha de comando.b
-v
Dentro do
awk
script, iteramos sobre os campos de cada linha e, se algum campo for diferente de thea
eb
value, imprimimos a linha completa e continuamos com a próxima linha imediatamente.Se nenhum campo for diferente de ambos
a
eb
, nada acontece (a linha não é impressa).Você pode obter os resultados desejados com a escolha certa de regex. Nota: supondo que as variáveis do shell tenham caracteres sem graça, significando aqueles que não são interpretáveis como regex especiais. Caso isso não seja verdade, você pode revestir os vars no
\Q...\E
contexto.