FILE
:
hello
world
foo
bar
Come posso rimuovere tutte le nuove righe vuote in questo FILE
?
Uscita del comando:
FILE
:
hello
world
foo
bar
FILE
:
hello
world
foo
bar
Come posso rimuovere tutte le nuove righe vuote in questo FILE
?
Uscita del comando:
FILE
:
hello
world
foo
bar
Risposte:
grep . FILE
(E se si vuole veramente farlo in sed, allora: sed -e /^$/d FILE
)
(E se si vuole veramente farlo in awk, allora: awk /./ FILE
)
sed -ne/./p
funziona anche ed awk /./
è più breve (l'azione è {print}
se non specificata). @ ghostdog74: grep '[^[:space:]]'
allora.
.
è un'espressione regolare che corrisponde a qualsiasi carattere tranne che per la nuova riga.
grep . FILE
funziona con l'esempio fornito, ma non necessariamente quando il file può contenere byte che non fanno parte del set di caratteri. Ad esempio, con GNU grep 2.20, printf "\x80\n" | grep .
non restituisce nulla.
Prova quanto segue:
grep -v -e '^$'
grep -v -e '^$'
funziona sempre, il che non è il caso di grep .
. Ad esempio, con GNU grep 2.20, printf "\x80\n" | grep .
non restituisce nulla, mentre printf "\x80\n" | grep -v '^$'
restituisce la riga non vuota.
with awk, just check for number of fields. no need regex
$ more file
hello
world
foo
bar
$ awk 'NF' file
hello
world
foo
bar
awk1line.txt
- poi di nuovo, quindi sono la maggior parte dei trucchi awk :)
Ecco una soluzione che rimuove tutte le righe che sono vuote o contengono solo spazi:
grep -v '^[[:space:]]*$' foo.txt
Prova questo: sed -i '/^[ \t]*$/d' file-name
Eliminerà tutte le righe vuote con alcun no. di spazi bianchi (spazi o tabulazioni) cioè (0 o più) nel file.
Nota: c'è uno "spazio" seguito da "\ t" all'interno della parentesi quadra.
Il modificatore -i
forza a riscrivere i contenuti aggiornati nel file. Senza questo flag puoi vedere le righe vuote cancellate sullo schermo ma il file effettivo non sarà influenzato.
grep '^..' my_file
esempio
THIS
IS
THE
FILE
EOF_MYFILE
fornisce come output solo le righe con almeno 2 caratteri.
THIS
IS
THE
FILE
EOF_MYFILE
Vedi anche i risultati con gli grep '^' my_file
output
THIS
IS
THE
FILE
EOF_MYFILE
e anche con le grep '^.' my_file
uscite
THIS
IS
THE
FILE
EOF_MYFILE
Se rimuovere le righe vuote significa righe che includono eventuali spazi, utilizzare:
grep '\S' FILE
Per esempio:
$ printf "line1\n\nline2\n \nline3\n\t\nline4\n" > FILE
$ cat -v FILE
line1
line2
line3
line4
$ grep '\S' FILE
line1
line2
line3
line4
$ grep . FILE
line1
line2
line3
line4
Guarda anche:
Perl potrebbe essere eccessivo, ma funziona altrettanto bene.
Rimuove tutte le righe completamente vuote:
perl -ne 'print if /./' file
Rimuove tutte le righe che sono completamente vuote o contengono solo spazi bianchi:
perl -ne 'print if ! /^\s*$/' file
Variazione che modifica l'originale e crea un file .bak:
perl -i.bak -ne 'print if ! /^\s*$/' file
Se vuoi sapere qual è il totale delle righe di codice nel tuo progetto Xcode e non sei interessato a elencare il conteggio per ogni file swift, questo ti darà la risposta. Rimuove le righe senza codice e rimuove le righe che hanno il prefisso del commento//
Eseguilo al livello principale del tuo progetto Xcode.
find . \( -iname \*.swift \) -exec grep -v '^[[:space:]]*$' \+ | grep -v -e '//' | wc -l
Se hai blocchi di commenti nel tuo codice che iniziano con /*
e finiscono con */
come:
/*
This is an comment block
*/
quindi questi verranno inclusi nel conteggio. (Troppo difficile).
Risposta più semplice -----------------------------------------
[root@node1 ~]# cat /etc/sudoers | grep -v -e ^# -e ^$
Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
[root@node1 ~]#