Który z nich byłby lepszy:usunąć puste wiersze z txtfiles, usuń spacje z początku i końca linii
sed -e '/^$/d' *.txt
sed 'g/^$/d' -i *.txt
także, w jaki sposób usunąć spacje z początku i na końcu każdego wiersza w pliku tekstowym?
Który z nich byłby lepszy:usunąć puste wiersze z txtfiles, usuń spacje z początku i końca linii
sed -e '/^$/d' *.txt
sed 'g/^$/d' -i *.txt
także, w jaki sposób usunąć spacje z początku i na końcu każdego wiersza w pliku tekstowym?
$ sed 's/^ *//; s/ *$//; /^$/d' file.txt
`s/^ *//` => left trim
`s/ *$//` => right trim
`/^$/d` => remove empty line
'sed -r 's/^ \ s * //; s/\ s * $ //;/^ $/d'' – kev
' sed -r "/^\ s * \ $/d; s @^\ s * (. *) \ s * \ $ @ \ 1 @" '- less' sed'- "calling" :) – uzsolt
Uwaga dla użytkowników OS X: równoważną odpowiedzią jest 'sed -E 's/^ + //; s/+ $ //;/^ $/d 'plik.txt' (odpowiednik uogólnionego wariantu opartego na '\ s' to:' sed -E' s/^ [[: space:]] + //; s/[[: spacja:]] + $ //;/^ $/d 'plik.txt'. (Nie ma opcji '-r' dla' sed' na OS X (od 10,8), '-E' włącza rozszerzoną regularną wyrażenia, które obsługują klasę znaków [[::::::::,,,,,,,,,,,,,,,,,, w przeciwieństwie do "\ s".) – mklement0
To może pracować dla Ciebie:
sed -r 's/^\s*(.*\S)*\s*$/\1/;/^$/d' file.txt
Doskonały! –
Podobny, ale przy użyciu ex
edytora:
ex -s +"g/^$/de" +"%s/^\s\+//e" +"%s/\s\+$//e" -cwq foo.txt
Dla wielu plików:
ex -s +'bufdo!g/^$/de' +'bufdo!%s/^\s\+//e' +'bufdo!%s/\s\+$//e' -cxa *.txt
Aby wymienić rekurencyjnie, ty może użyć a new globbing option (np. **/*.txt
).
Jeszcze bardziej prosta metoda z wykorzystaniem awk.
cat filename.txt | awk 'NF' | awk '{$1=$1;print}'
awk 'NF'
- Spowoduje to usunięcie wszystkich pustych/pustych linii.
awk '{$1=$1;print}'
- Spowoduje to usunięcie tylko końcowe białe spacje (zarówno lewy i prawy)
myślę 'G' w' g/^ $/d' jest bezużyteczny. – kev