Desidero eliminare una riga se contiene un valore specificato.Awk elimina riga contenente dati
2 5 8
1 3 7
8 5 9
Quindi, se ho voluto per eliminare una riga contenente 7 come il terzo campo:
{
if($3 == 7){
####delete the line
}
}
Desidero eliminare una riga se contiene un valore specificato.Awk elimina riga contenente dati
2 5 8
1 3 7
8 5 9
Quindi, se ho voluto per eliminare una riga contenente 7 come il terzo campo:
{
if($3 == 7){
####delete the line
}
}
Dovrebbe essere sufficiente dire
$ awk '$3 != 7'
Si noti che questo è un confronto numerico, e ometterà le righe in cui il terzo campo è, ad esempio, "0.7e1", ma funzionerà per i dati di esempio forniti.
eliminare una riga contenente 7
awk '!/7/' yourFile
Le altre risposte funzionano. Ecco perché
Il modello di elaborazione standard di Awk consiste nel leggere una riga di input, opzionalmente corrispondere a quella linea e, se necessario, stampare (in via opzionale) l'input. Le altre soluzioni utilizzano una corrispondenza di negazione, pertanto le righe vengono stampate a meno che non venga effettuata la corrispondenza con lo.
L'esempio di codice non utilizza una corrispondenza di negazione: dice "se qualcosa è vero, fallo". Poiché vuoi eliminare l'input, quando abbini quel target, puoi semplicemente saltare la stampa.
{
if($3 == 7){
#skip printing this line
next
}
}
IHTH.
Questa sintassi non funziona con tcsh. Hai bisogno di scappare! – ThomasMcLeod
Escaping '!' Non è la soluzione. La soluzione è non usare 'tcsh'! –