Mam prosty plik tekstowy o nazwie „przykład”.
Odczytywanie za pomocą polecenia terminala: cat example
Wynik:
abc cdef ghi jk lmnopq rst uv wxyz
Chcę przekonwertować (przekształcić) w następującą postać: (oczekiwany wynik z cat example
)
abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz
Jak mogę to zrobić za pomocą wiersza polecenia?
(To tylko przykładowy plik, chcę przekonwertować pozycję słowa w kolumnie pionowej)
command-line
text-processing
Pandya
źródło
źródło
Odpowiedzi:
Kilka możliwości:
Klasyk, użyj
tr
:Posługiwać się
cut
Posługiwać się
sed
Posługiwać się
perl
Użyj powłoki
źródło
sed
przykład musiałem dodać a,$
aby uzyskać bash i zastąpić go nową linią, tj .:sed $'s/ /\\\n/g' example
sed $'s/ /\\n/g'
Wypróbuj poniższe polecenie
LUB
Przykład:
Wyjaśnienie:
RS (Record seperator) jest wbudowaną zmienną awk. W pierwszym poleceniu wartość zmiennej zmiennej Separator rekordów to spacja. więc awk przerywa drukowanie linii, gdy tylko znajdzie miejsce.
W drugim poleceniu wartością zmiennej RS jest spacja lub znak nowej linii. To polecenie eliminuje dodatkową pustą linię pojawiającą się podczas uruchamiania pierwszego polecenia.
źródło
Można użyć
xargs
,albo lepiej
źródło
xargs -n 1 < example
ratuje 1 kotkaZa pomocą
perl
oneliner:Zastąpi spacje i tabulatory „ENTER” (alias
\n
)źródło
Nikt nie wysłał pytona, więc oto:
Przekierowujemy plik wejściowy do
python
strumienia standardowego i odczytujemy go wiersz po wierszu. Każda linia jest usuwana ze swojej nowej linii, dzielona na słowa, a następnie ponownie łączona w jeden ciąg, w którym każde słowo jest oddzielone nową linią. Ma to na celu zapewnienie jednego słowa w linii i uniknięcie wstawienia wielu nowych linii, w przypadku gdy obok spacji jest wiele spacji wzajemnie. W końcu otrzymujemy listę ciągów, która jest następnie ponownie łączona w większy ciąg i drukowana do standardowego strumienia. Później można przekierować do innego pliku z> out.txt
przekierowaniem.źródło
Podobne do powyższego „tr”, ale z dodatkami:
Działa również dla kart
Konwertuje wiele spacji lub tabulatorów na 1 znak nowej linii
źródło