Muszę zastąpić wszystkie białe spacje w tekście przecinkami. Obecnie używam tej linii, ale to nie działa: otrzymuję jako wynik plik tekstowy, który jest dokładnie taki sam jak oryginalny:
sed 's/[:blank:]+/,/g' orig.txt > modified.txt
dzięki
Muszę zastąpić wszystkie białe spacje w tekście przecinkami. Obecnie używam tej linii, ale to nie działa: otrzymuję jako wynik plik tekstowy, który jest dokładnie taki sam jak oryginalny:
sed 's/[:blank:]+/,/g' orig.txt > modified.txt
dzięki
Odpowiedzi:
Z sed
:
sed -e 's/\s\+/,/g' orig.txt > modified.txt
Lub z perl
:
perl -pne 's/\s+/,/g' < orig.txt > modified.txt
Edycja: Aby wykluczyć nowe wiersze w perlu, możesz użyć podwójnego negatywu 's/[^\S\n]+/,/g'
lub dopasować tylko do wybranych białych znaków spacji 's/[ \t\r\f]+/,/g'
.
+
operatora w sed, właśnie zaktualizowałem swoją odpowiedź. Newlines są białymi znakami w Perlu, więc będziesz musiał ręcznie wykonać klasę białych znaków, jeśli nie chcesz jej uwzględniać. Do tego dodałem dwa rozwiązania.
awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo
Tutaj nazwa pliku to Serwery .. Zawiera poniższą treść ..
Server1
Server2
Server3
Jeśli użyjemy powyższego polecenia, możemy uzyskać poniższe dane wyjściowe.
Server1,Server2,Server3,
[mohramak@oc3246038448 Desktop]$ cat Servers
Server1
Server2
Server3
[mohramak@oc3246038448 Desktop]$ awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo
Server1,Server2,Server3,
[mohramak@oc3246038448 Desktop]$