Czy ktoś wie, jak używać Sed do usuwania wszystkich pustych spacji w pliku tekstowym? Próbowałem w tym celu użyć polecenia usuwania „d”, ale nie mogę tego rozgryźć
28
„Usunąć wszystkie puste spacje” może oznaczać jedną z różnych rzeczy:
0x20
.\t
”\n
” i inneJeśli sed
z jakiegoś ukrytego powodu nie jest to wymagane, lepiej użyj odpowiedniego narzędzia do pracy.
Polecenie to tr
ma głównie zastosowanie w tłumaczeniu (stąd nazwa „tr”) listy znaków na listę innych znaków. Jako przypadek narożny może tłumaczyć na pustą listę znaków; Opcja -d
( --delete
) usuwa znaki pojawiające się na liście.
Lista znaków może wykorzystywać klasy znaków w [:...:]
składni.
tr -d ' ' < input.txt > no-spaces.txt
tr -d '[:blank:]' < input.txt > no-spaces.txt
tr -d '[:space:]' < input.txt > no-spaces.txt
sed
W przypadku sed [:...:]
składnia klas znaków musi być połączona ze składnią zestawów znaków w wyrażeniach regularnych [...]
, co powoduje nieco zamieszanie [[:...:]]
:
sed 's/ //g' input.txt > no-spaces.txt
sed 's/[[:blank:]]//g' input.txt > no-spaces.txt
sed 's/[[:space:]]//g' input.txt > no-spaces.txt
tr -d ' ' < input.txt > no-spaces.txt
.tr
. (Widzisz to gdzieś indziej?)Możesz użyć tego do usunięcia wszystkich białych znaków w
file
:źródło
man sed | sed "s/ //g"
/
inną postacią, np .:sed "ss ssg"