Dowolny znak lub łańcuch można zastąpić za pomocą polecenia `sed`. Czasami musimy zastąpić znak nowej linii ( ) w pliku przecinkiem. W tym artykule używamy polecenia `sed`, aby zastąpić przecinkiem.
Użycie `sed` do zastąpienia przecinkiem
W przypadku zamiany na przecinek może wystąpić wiele problemów. Domyślnie każda linia kończy się na podczas tworzenia pliku. Polecenie `sed` można łatwo podzielić na i zastąpić znak nowej linii dowolnym znakiem. Zamiast można użyć innego ogranicznika, ale tylko wtedy, gdy używany jest GNU sed. Gdy w ostatnim wierszu pliku brakuje , GNU sed może uniknąć drukowania . Co więcej, jest zwykle dodawane do każdego kolejnego wyjścia `sed`.
Utwórz plik
W tym artykule pokażemy, jak użyć polecenia `sed` do zastąpienia przecinkiem. Aby podążać za tym samouczkiem, utwórz plik tekstowy o nazwie Klienci.txt z następującymi tabelarycznymi informacjami o kliencie.
NS | Nazwa | Telefon | |
---|---|---|---|
c01 | lek. Rakib | [e-mail chroniony] | 01856233238 |
c02 | Meher zamroził | [e-mail chroniony] | 01733536342 |
c03 | Fakrul Ahsan | [e-mail chroniony] | 01934737248 |
c04 | Helal Uddin | [e-mail chroniony] | 01534895898 |
c05 | Nusrat Jahan | [e-mail chroniony] | 01866345254 |
Przykład 1: Zastąp przecinkiem, używając -z
Opcja -z służy do konwersji na znak null ( ). Zawartość pliku jest traktowana jako pojedyncza linia, jeśli nie zawiera żadnych znaków null. Polecenie `sed` skonwertuje znak nowej linii na znak null i zastąpi każdy przecinkiem przy użyciu pierwszego wzorca wyszukiwania i zamiany. Tutaj „g” służy do globalnego wyszukiwania . Przy drugim wzorcu wyszukiwania i zamiany ostatni przecinek zostanie zastąpiony przez .
$KotKlienci.txt
$sed -z 's/ /,/g;s/,$/ /'Klienci.txt
Po uruchomieniu poleceń zostaną wygenerowane następujące dane wyjściowe.
Przykład 2: Zastąp przecinkiem za pomocą a, b, $! oraz n
Polecenie `sed` może być użyte do zastąpienia przecinkiem za pomocą a, b, N i $! . Tutaj, do służy do dołączania zadań, b służy do rozgałęziania treści, n służy do przejścia do następnej linii i $! służy do zapobiegania zastosowaniu zadania zastępowania do ostatniego wiersza. Polecenie zastąpi każde z nich z przecinkiem z wyjątkiem ostatniego wiersza.
$KotKlienci.txt
$sed ':a;N;$!ba;s/ /,/g'Klienci.txt
Po uruchomieniu poleceń zostaną wygenerowane następujące dane wyjściowe.
Przykład 3: Zastąp przecinkiem używając H, h, d, x i y
Jeśli chcesz wymienić ) z przecinkiem w małym pliku, można użyć następującego polecenia `sed`. Tutaj, h służy do dołączenia ostatniej linii do tekstu trzymania, 1h służy do kopiowania każdej linii pliku do tekstu trzymania od pierwszej linii, $!d służy do usuwania wszystkich linii z wyjątkiem ostatniej linii, x służy do wymiany tekstu trzymającego i przestrzeni wzorca, oraz oraz służy do wymiany każdego w tekście gospodarstwa z przecinkiem.
$KotKlienci.txt$sed 'H;1h;$!d;x;y/ /,/'Klienci.txt
Po uruchomieniu poleceń zostaną wygenerowane następujące dane wyjściowe.
Przykład 4: Zastąp przecinkiem, używając -n ,H, h, g i p
Polecenie `sed` może być użyte do zamiany z przecinkiem z -n opcja, która uniemożliwia automatyczne drukowanie. Podobnie jak w poprzednim przykładzie, h służy tutaj do dołączenia ostatniej linii do tekstu trzymającego, 1h służy do kopiowania każdej linii pliku do tekstu trzymającego, $ odnosi się do ostatniego wiersza pliku, g służy do kopiowania z tekstu trzymającego, i P służy do drukowania.
$KotKlienci.txt$sed-n„H;1h; ${g; s / /,/g;p}'Klienci.txt
Poniższe dane wyjściowe zostaną wygenerowane po uruchomieniu powyższych poleceń.
Przykład 5: Zastąp przecinkiem używając H, x, p
H, x i p zostały wyjaśnione w poprzednich przykładach. Pierwsze wyrażenie wyszukiwania i zamiany zastąpi każde z nich z przecinkiem, a drugie wyrażenie wyszukiwania i zamiany zastąpi przecinek na początku wiersza spacją.
$KotKlienci.txt$sed-n'H;${x;s/ /,/g;s/^,//;p;}'Klienci.txt
Poniższe dane wyjściowe zostaną wygenerowane po uruchomieniu powyższych poleceń.
Przykład 6: Zastąp przecinkiem, używając N i `cat`
Polecenie `cat` jest tutaj używane do wysłania zawartości pliku do polecenia `sed`, a n służy do przejścia do następnej linii.
$KotKlienci.txt$KotKlienci.txt| sed 'N;s/ /,/'
Poniższe dane wyjściowe zostaną wygenerowane po uruchomieniu powyższych poleceń.
Wniosek
Może być konieczne zastąpienie przecinkiem, aby przenieść dane z jednego formatu pliku do drugiego. Ten rodzaj zamiany można również wykonać za pomocą innych poleceń systemu Linux. Wiele opcji poleceń, takich jak H, N, h i x, może być użytych z poleceniem `sed` do wykonania tego zadania. Ten samouczek omawia kilka sposobów użycia polecenia `sed` do zastąpienia przecinkiem.