01. Ogólna składnia dla SED
02. Wymień ciąg w pliku na skrypt bash sed
03. SED G i I Polecenia dla globalnego i nieczułych przypadków
04. Dopasowanie cyfr sed
05. Ogólna składnia dla AWK
06. Zastąp ciąg w pliku na skrypt Bash AWK
07. Wymień ciąg w pliku na czyste skryptowanie bash
08. Zastąp ciąg w pliku Perl One Liner
Przykładowe dane dotyczące wymiany ciągów Bash
Plik tekstowy o nazwie Obroty.tekst Wraz z następującą zawartością jest wyświetlanie operacji zastępczych.
Obroty.tekst
Ogólna składnia dla SED: Wymień ciąg w pliku
Podstawowa składnia ''sed„Polecenie do wymiany określonego ciągu w pliku jest podane poniżej.
Składnia
sed -i 's/search_string/zamiennik_string/' nazwa pliku
Każda część powyższej składni jest wyjaśniona poniżej.
'-I' Opcja służy do modyfikacji zawartości oryginalnego pliku za pomocą ciągu zastępczego, jeśli ciąg wyszukiwania istnieje w pliku.
'S' Wskazuje polecenie zastępcze.
'szukana fraza' zawiera wartość ciągu, która zostanie przeszukana w pliku w celu wymiany.
„zamiennik_string” zawiera wartość ciągu, która zostanie użyta do zastąpienia zawartości pliku, który pasuje 'szukana fraza' wartość.
'Nazwa pliku' zawiera nazwę pliku, w której zostaną zastosowane wyszukiwanie i wymiana.
Przykład 1: Wymień plik na polecenie „SED”
W poniższym skrypcie tekst wyszukiwania i ponownego miejsca zostanie pobrany od użytkownika. Jeśli ciąg wyszukiwania istnieje w „sprzedaży.txt ', a następnie zostanie zastąpiony ciągiem zastępczym. Tutaj zostanie przeprowadzone wyszukiwanie wrażliwe na sprawę.
#!/bin/bash
# Przypisz nazwę pliku
filename = "sprzedaż.tekst"
# Weź ciąg wyszukiwania
Przeczytaj -p „Wprowadź ciąg wyszukiwania:” Wyszukaj
# Weź wymien
odczyt -p „Wprowadź String zamień:” Wymień
Jeśli [[$ wyszukiwanie != "" && $ zamień != ""]]; Następnie
sed -i "s/$ search/$ zamień/" $ nazwa pliku
fi
Wyjście:
Przykład 2: Wymień plik na polecenie „sed” na flagę „g” i „i”
Poniższy skrypt będzie działał jak poprzedni przykład, ale ciąg wyszukiwania zostanie przeszukany na całym świecie pod kątem flagi „g”, a wyszukiwanie wrażliwe na sprawę zostanie przeprowadzone dla flagi „I”.
#!/bin/bash
# Weź ciąg wyszukiwania
Przeczytaj -p „Wprowadź ciąg wyszukiwania:” Wyszukaj
# Weź wymien
odczyt -p „Wprowadź String zamień:” Wymień
Jeśli [[$ wyszukiwanie != "" && $ zamień != ""]]; Następnie
sed -i "s/$ search/$ zamień/gi" 1 $
fi
Wyjście:
Przykład 3: Wymień plik na polecenie „SED” i dopasowany wzór cyfr
Poniższy skrypt wyszukiwa wszystkie treści numeryczne w pliku i zastąpi treść, dodając „$” symbol na początku liczb.
#!/bin/bash
# Sprawdź wartość argumentu wiersza poleceń lub nie
Jeśli [1 USD != ""]; Następnie
# Wyszukaj wszystkie ciąg zawierające cyfry i dodaj $
sed -i 's/\ b [0-9] \ 5 \ \ b/$ &/g' $ 1 $
fi
Wyjście:
Wymień ciąg w pliku na polecenie „AWK”
''awk Polecenie to kolejny sposób na wymianę ciągu w pliku, ale to polecenie nie może zaktualizować oryginalnego pliku bezpośrednio jak 'sed ' Komenda.
Przykład 4: Wymień plik na polecenie „AWK”
Poniższy skrypt będzie przechowywał zaktualizowaną zawartość w Temp.tekst plik, który zostanie przemianowany przez oryginalny plik.
#!/bin/bash
# Sprawdź wartość argumentu wiersza poleceń lub nie
Jeśli [1 USD != ""]; Następnie
# Wyszukaj cały ciąg na podstawie daty
awk 'sub („02/06/2020”, „12/06/2020”) print' $ 1> temp.TX && MV TEMP.TXT 1 $
fi
Wyjście:
W powyższym przykładzie polecenie „AWK” służy do wyszukiwania ciągu „02/06/2020”, który jest ostatnim datą w naszym przykładowym pliku. Dopasowany ciąg zostanie zastąpiony nowym ciągiem „12.06.2020”. Ciąg wynikający z tego, czy zastąpiony, czy nie, jest wydrukowany na każdej linii.
Przykład 5: Wymień ciąg w pliku na czyste skryptowanie bash
W tym przykładzie wykonamy to samo zadanie z bashem podczas pętli i polecenia zastępowania ciągu Bash. Napiszemy wyjście do TMP złożyć i wymień oryginał na końcu skryptu. Zobacz kod poniżej:
#!/bin/bash
podczas linii odczytu; Do
# Wymień wszystkie instancje na linii Khulny na Dhaka
echo $ linia // khulna/dhaka
zrobione < Sales.txt > /TMP/sprzedaż.o.tekst
MV /TMP /sprzedaż.o.Sprzedaż TXT.tekst
Możesz zobaczyć, jak polecenie echo wykonuje wymianę w zmiennej linii, ponieważ skrypt odczytuje każdy wiersz w pliku tekstowym i zastąpi wszystkie instancje Khulna z nowym ciągiem Dhaka. Pętla While odczytuje z pliku wejściowego Obroty.tekst i zapisuje do pliku wyjściowego /TMP/sprzedaż.o.tekst. Wreszcie tymczasowy plik wyjściowy zastępuje oryginalny plik na mv Komenda.
Wyjście:
Przykład 6: Wymień ciąg w pliku na Perl One Liner
To zadanie jest w rzeczywistości bardzo proste Perl. Perl to stary, mniej popularny język, ale niezwykle potężny. Można to zrobić za pomocą polecenia wiersza w wierszu poleceń Bash:
Perl -pi.BAK -E 'S/DHAKA/BOGRA/G SPRZEDAŻY.tekst-Liczba Pi.Bak mówi Perla, aby przetworzył plik na miejscu, a także utworzyć plik kopii zapasowej z .rozszerzenie Bak. Zamiennik będzie wszystkich instancji Dhaka Do Bogra Jako nowy tekst. Tutaj możesz zobaczyć łatwe wyjście tego polecenia:
WYJŚCIE:
Wniosek
W tym artykule pokazano, jak używać scenariuszy BASH do wymiany ciągów w pliku wyszukiwaniem i wymiany na wierszu poleceń w Bash. Istnieje wiele sposobów, w tym z poleceniami SED, AWK, Perl; Możesz użyć natywnych skryptów bash z pętlami i regexem, a więcej sposobów nie omawianych tutaj. Bash i Linux mają wiele sposobów wykonywania tej samej pracy.