Mam plik .txt z numerami uporządkowanymi w ten sposób (w tym samym wierszu):
106849_01373 106849_01967 106850_00082 23025.7_01059
Chciałbym je przekonwertować w ten sposób:
106849_01373
106849_01967
106850_00082
23025.7_01059
Nie mam pojęcia, którego polecenia użyć. Czy ktoś może mi w tym pomóc?
command-line
text-processing
Annemieke Smet
źródło
źródło
Całkiem łatwe dzięki
tr
:Przykład:
źródło
odpowiedź heemayl jest właściwą drogą, jednak oto alternatywa dla Perla:
-l
: umożliwia automatyczne przetwarzanie końca linii. Ma dwa osobne efekty. Po pierwsze, automatycznie używa komendy $ / (separator rekordów wejściowych), gdy jest używana z -n lub -p. Po drugie, przypisuje $ \ (separator rekordu wyjściowego), aby miał wartość octnum, dzięki czemu wszelkie instrukcje drukowania będą miały ponownie dodany separator. Jeśli octnum zostanie pominięty, ustawia $ \ na bieżącą wartość $ /.-a
: włącza tryb automatycznego podziału, gdy jest używany z -n lub -p. Ujawnione polecenie podziału na tablicę @F jest wykonywane jako pierwsza rzecz w niejawnej pętli while generowanej przez -n lub -p.-n
: powoduje, że Perl zakłada następującą pętlę wokół twojego programu, co powoduje iterację argumentów nazw plików, takich jak sed -n lub awk:-e
: może być użyty do wprowadzenia jednego wiersza programu;$,="\n"
: ustawia separator pola wyjściowego na nowy wiersz;print(@F)
: drukuje pola oddzielone separatorem pól wyjściowych.źródło
AWK
podejście. Zasadniczo zmiana separatora wyjściowego dla pól i zapętlanie. Plik testowy to twój przykład wklejany w kółko z ENDLINE na końcuźródło
Używanie
sed
:źródło
Po prostu dodaję rozwiązanie Python dla zabawy:
To polecenie uruchamia jednowierszowy skrypt Python 3 w „pojedynczych cudzysłowach” z nazwą pliku, który chcesz przekonwertować jako argument na końcu. Składnia jest następująca:
Skrypt 1-liniowy, którego używamy, jest następujący (rozszerzony do wielu linii dla zachowania przejrzystości):
Importuje
sys
moduł w celu odczytania argumentów wiersza poleceń, przyjmuje pierwszy podany argument jako nazwę pliku i drukuje każdy fragment danych oddzielony spacjami z pliku w jednym wierszu.źródło