Mam następujące dane i muszę to wszystko umieścić w jednym wierszu.
Mam to:
22791
;
14336
;
22821
;
34653
;
21491
;
25522
;
33238
;
Potrzebuję tego:
22791;14336;22821;34653;21491;25522;33238;
EDYTOWAĆ
Żadne z tych poleceń nie działa idealnie.
Większość z nich pozwala, aby dane wyglądały następująco:
22791
;14336
;22821
;34653
;21491
;25522
Odpowiedzi:
Edytować:
Jeśli żadne z zamieszczonych tutaj poleceń nie działa, masz coś innego niż znak nowej linii oddzielający pola. Być może masz w pliku zakończenia linii DOS / Windows (chociaż spodziewałbym się, że rozwiązania Perla będą działać nawet w tym przypadku)?
Próbować:
Jeśli to nie zadziała, będziesz musiał dokładniej przyjrzeć się plikowi (np. W edytorze szesnastkowym), aby dowiedzieć się, jakie znaki są tam faktycznie, które chcesz usunąć.
źródło
tr
nie nadaje się do pustych linii. Co myślisz? - - Myślę, żesed
to najlepsza opcja, jak opisana tutaj stackoverflow.com/q/16414410/54964echo -n $(tr -d "\n" < yourfile.txt) > yourfile.txt
Muszę wykonać pracę.
źródło
perl -pie 's/\R//g' filename
źródło
paste -sd ""
nie działa domyślnie na STDIN, więc jeśli do niego(some command) | paste -sd "" -
paste -sd'\0' -
Lub
Lub
Ta strona tutaj ma kilka innych metod do nowej linii usunąć.
edytowano, aby usunąć nadużycia kotów
źródło
posługiwać się
dowiedzieć się, CO jest obrażającą postacią. następnie użyj
dla LF
dla CRLF
źródło
Możesz edytować plik w vimie:
źródło
:%s/\n/ /g
Korzystanie z man 1 ed:
źródło
Fakt Nerd: zamiast tego użyj ASCII.
(Edytowano, ponieważ nie widziałem pieprzonej odpowiedzi, która miała to samo rozwiązanie, jedyną różnicą było to, że moja miała ASCII)
źródło
Użyj seda z klasami POSIX
Spowoduje to usunięcie wszystkich wierszy zawierających tylko spacje (spacje i tabulatory)
sed '/^[[:space:]]*$/d'
Po prostu weź wszystko, z czym pracujesz i podłącz to do tego
Przykład
cat filename | sed '/^[[:space:]]*$/d'
źródło
źródło
Jeśli dane znajdują się w pliku file.txt, to:
Znak „
$(<file.txt)
” odczytuje plik i podaje zawartość jako serię słów, które „odbijają się”, a następnie odbijają się spacją między nimi. Następnie polecenie „tr” usuwa wszelkie spacje:źródło
tr -d '\n' < file.txt
, co robi zaakceptowana odpowiedź (i jestem zaskoczony, że wtedy jej nie napisałem). Prawdopodobnie zostało to napisane tylko po to, aby pokazać „jeszcze jeden sposób na zrobienie tego”.xargs
zużywa również znaki nowej linii (ale dodaje ostatnią końcową nową linię):źródło
Zakładając, że chcesz zachować tylko cyfry i średniki, poniższe czynności powinny załatwić sprawę, zakładając, że nie ma większych problemów z kodowaniem, chociaż usunie też ostatnią „nową linię”:
Możesz łatwo zmodyfikować powyższe, aby uwzględnić inne znaki, np. Jeśli chcesz zachować kropki dziesiętne, przecinki itp.
źródło
Korzystanie z edytora tekstu gedit (3.18.3)
\n\s
w pole ZnajdźUwaga: to nie rozwiązuje dokładnie pierwotnego, 7-letniego problemu OP, ale powinno pomóc niektórym użytkownikom systemu Linux noob (takim jak ja), którzy znaleźli drogę tutaj z SE z podobnymi pytaniami „Jak uzyskać mój tekst w jednej linii” .
źródło
Miałem dziś ten sam przypadek, bardzo łatwy w vimie lub nvim, możesz użyć
gJ
do łączenia linii. W swoim przypadku po prostu zróbto dołączy do wszystkich twoich 99 linii. Możesz dostosować liczbę
99
według potrzeb w zależności od liczby linii do połączenia. Jeśli dołączysz tylko do jednej linii,gJ
to wystarczy.źródło
Zrobiłbym to za pomocą awk, np
(wadą jest to, że a jest „gromadzone” w pamięci).
EDYTOWAĆ
Zapomniałem o printf! Tak też
lub prawdopodobnie lepiej, co zostało już podane w innych odpowiedziach używających awk.
źródło
Zwykle dostaję ten przypadek, gdy kopiuję fragment kodu z pliku i chcę go wkleić do konsoli bez dodawania niepotrzebnych nowych linii, skończyło się na utworzeniu aliasu bash
(nazwałem go,
oneline
jeśli jesteś ciekawy)xsel -b -o
czyta mój schowektr -d '\n'
usuwa nowe linietr -s ' '
usuwa powtarzające się spacjexsel -b -i
przesyła to z powrotem do mojego schowkapotem wklejałem nową zawartość schowka do oneline w konsoli lub czymkolwiek.
źródło
Brakuje Ci najbardziej oczywistej i szybkiej odpowiedzi, zwłaszcza gdy musisz to zrobić w GUI, aby naprawić dziwne zawijanie słów.
otwarty
gedit
Następnie Ctrl+ H, następnie umieść w polu
Find
tekstowym\n
i wReplace with
puste miejsce,a następnie wypełnij pole wyboru
Regular expression
i voila.źródło
Aby również usunąć końcowy znak nowej linii na końcu pliku
źródło