Ipinapakita ng sumusunod na output na ang GNU Sed ng bersyon 4.4 ay na-install sa system.
Syntax:
sed [mga pagpipilian]...[iskrip] [file]
Kung walang ibinigay na filename ng `sed` na utos, pagkatapos ay gagana ang script sa karaniwang data ng pag-input. Ang script na `sed` ay maaaring maipatupad nang walang anumang pagpipilian.
Nilalaman :
- Pangunahing pagpapalit ng teksto gamit ang ‘sed’
- Palitan ang lahat ng mga pagkakataon ng isang teksto sa isang partikular na linya ng isang file sa pamamagitan ng paggamit ng opsyong ‘g’
- Palitan ang pangalawang paglitaw lamang ng isang tugma sa bawat linya
- Palitan lamang ang huling paglitaw ng isang tugma sa bawat linya
- Palitan ang unang tugma sa isang file ng bagong teksto
- Palitan ang huling tugma sa isang file ng bagong teksto
- Ang pagtakas sa backslash upang palitan ang mga utos upang pamahalaan ang paghahanap at palitan ang mga file path
- Palitan ang lahat ng mga file ng buong landas na may filename lamang na walang direktoryo
- Kapalit ng teksto ngunit kung ang ilang iba pang teksto ay matatagpuan sa string
- Kapalit ng teksto ngunit kung ang ilang iba pang teksto ay hindi matatagpuan sa string
- Magdagdag ng string bago pagkatapos ng pagtutugma na pattern gamit ang ‘ 1 '
- Tanggalin ang mga tumutugma na linya
- Tanggalin ang katugmang linya at 2 linya pagkatapos ng pagtutugma ng linya
- Tanggalin ang lahat ng mga puwang sa dulo ng linya ng teksto
- Tanggalin ang lahat ng mga linya na may isang tugma ng dalawang beses sa linya
- Tanggalin ang lahat ng mga linya na may tanging whitespace
- Tanggalin ang lahat ng mga hindi nai-print na character
- Kung mayroong isang tugma sa linya idagdag ang isang bagay upang tapusin ang linya
- Kung mayroong isang tugma sa linya ng insert insert bago ang laban
- Kung mayroong isang tugma sa linya ng insert insert pagkatapos ng tugma
- Kung walang isang tugma idagdag ang isang bagay sa dulo ng linya
- Kung walang tugma tanggalin ang linya
- I-duplicate ang katugmang teksto pagkatapos magdagdag ng isang puwang pagkatapos ng teksto
- Palitan ang isa sa isang listahan ng mga string gamit ang bagong string
- Palitan ang isang tugmang string ng isang string na naglalaman ng mga newline
- Alisin ang mga newline mula sa file at maglagay ng isang kuwit sa dulo ng bawat linya
- Alisin ang mga kuwit at magdagdag ng mga bagong linya upang hatiin ang teksto sa maraming mga linya
- Humanap ng insensitive match at tanggalin ang linya ng kaso
- Maghanap ng case insensitive match at palitan ng bagong teksto
- Humanap ng case insensitive match at palitan ng lahat ng malalaking titik ng parehong teksto
- Humanap ng case insensitive match at palitan ng lahat ng maliliit na parehong teksto
- Palitan ang lahat ng malalaking character sa teksto ng mga maliliit na character
- Maghanap para sa numero sa linya at idagdag ang simbolo ng pera pagkatapos ng numero
- Magdagdag ng mga kuwit sa mga numero na mayroong higit sa 3 mga digit
- Palitan ang mga character ng tab sa 4 na character na space
- Palitan ang magkakasunod na mga character na space na may isang character na tab
- Putulin ang lahat ng mga linya sa unang 80 mga character
- Maghanap para sa isang string regex at idagdag ang ilang karaniwang teksto pagkatapos nito
- Maghanap para sa isang string regex at isang pangalawang kopya ng nahanap na string pagkatapos nito
- Pagpapatakbo ng mga multi-line `sed` script mula sa isang file
- Itugma ang isang pattern na multi-line at palitan ng bagong teksto na maraming linya
- Palitan ang pagkakasunud-sunod ng dalawang salita na tumutugma sa isang pattern
- Gumamit ng maraming mga sed utos mula sa command-line
- Pagsamahin ang sed sa iba pang mga utos
- Magpasok ng isang walang laman na linya sa isang file
- Tanggalin ang lahat ng mga alpha-numerong character mula sa bawat linya ng isang file.
- Gumamit ng ‘&’ upang tumugma sa string
- Lumipat pares ng mga salita
- I-capitalize ang unang karakter ng bawat salita
- I-print ang mga numero ng linya ng file
1. Pangunahing pagpapalit ng teksto gamit ang ‘sed’
Ang anumang partikular na bahagi ng isang teksto ay maaaring hanapin at mapalitan ng paggamit ng paghahanap at pagpapalit ng pattern sa pamamagitan ng paggamit ng `sed` na utos. Sa sumusunod na halimbawa, ipinapahiwatig ng 's' ang paghahanap at palitan ang gawain. Ang salitang 'Bash' ay hahanapin sa teksto, Bash Scripting Wika at kung ang salita ay umiiral sa teksto kung gayon papalitan ito ng salitang 'Perl'.
$itinapon 'Bash Scripting Language' | sed 's / Bash / Perl /'
Output:
Ang salitang, 'Bash' ay umiiral sa teksto. Kaya't ang output ay 'Perl Scripting Wika'.
Ang 'sed` utos ay maaaring magamit upang mapalitan ang anumang bahagi ng isang nilalaman ng file din. Lumikha ng isang text file na pinangalanan araw ng linggo.txt kasama ang sumusunod na nilalaman.
araw ng linggo.txt
LunesMartes
Miyerkules
Huwebes
Biyernes
Sabado
Linggo
Ang sumusunod na utos ay maghanap at papalitan ang teksto ng 'Linggo', sa pamamagitan ng teksto na 'Linggo ay piyesta opisyal'.
$pusaaraw ng linggo.txt$sed 's / Linggo / Linggo ay piyesta opisyal /'araw ng linggo.txt
Output:
Ang 'Linggo' ay umiiral sa file ng weekday.txt at ang salitang ito ay pinalitan ng teksto, 'Linggo ay piyesta opisyal' pagkatapos na maipatupad ang na utos na `sed` sa itaas.
2. Palitan ang lahat ng mga pagkakataon ng isang teksto sa isang partikular na linya ng isang file gamit ang opsyong ‘g’
Ginagamit ang opsyong ‘g’ sa utos ng `sed` upang palitan ang lahat ng mga paglitaw ng pagtutugma ng pattern. Lumikha ng isang text file na pinangalanan sawa.txt kasama ang sumusunod na nilalaman upang malaman ang paggamit ng opsyong ‘g’. Naglalaman ang file na ito ng salita. 'Python' maraming beses.
sawa.txt
Ang Python ay isang tanyag na wika.
Madaling gamitin ang sawa. Madaling malaman ang sawa.
Ang Python ay isang wikang cross-platform
Papalitan ng sumusunod na utos ang lahat ng mga paglitaw ng ‘ Sawa 'Sa pangalawang linya ng file, sawa.txt . Dito, 'Python' nangyayari nang dalawang beses sa pangalawang linya.
$ cat python.txt$ sed'2 s / Python / perl / g'sawa.txt
Output:
Lilitaw ang sumusunod na output pagkatapos patakbuhin ang script. Dito, Lahat ng paglitaw ng 'Python' sa pangalawang linya ay pinalitan ng 'Perl'.
3. Palitan ang pangalawang paglitaw lamang ng isang tugma sa bawat linya
Kung ang anumang salita ay lilitaw ng maraming beses sa isang file pagkatapos ang partikular na paglitaw ng salita sa bawat linya ay maaaring mapalitan ng paggamit ng `sed` na utos na may bilang ng paglitaw. Ang sumusunod na 'sed` na utos ay papalitan ang pangalawang paglitaw ng pattern ng paghahanap sa bawat linya ng file, sawa.txt .
$ sed's / Python / perl / g2'sawa.txtOutput:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas. Dito, ang naghahanap na teksto, ‘ Sawa ' lilitaw ng dalawang beses sa pangalawang linya lamang at pinalitan ito ng teksto, ' Perl '.
4. Palitan ang huling paglitaw lamang ng isang tugma sa bawat linya
Lumikha ng isang text file na pinangalanan lang.txt kasama ang sumusunod na nilalaman.
lang.txt
Wika sa Programming ng Bash. Wika sa Programming ng Python. Perl Programang Wika.
Hyper Text Markup Language.
Extensible na Wika ng Markup.
5. Palitan ang unang tugma sa isang file ng bagong teksto
Ang sumusunod na utos ay papalitan lamang ng unang tugma ng pattern ng paghahanap, ‘ Sawa 'Sa pamamagitan ng teksto, ‘Perl ‘. Dito, '1' ay ginagamit upang tumugma sa unang paglitaw ng pattern.
$ cat python.txt$ sed'1 s / Python / perl /'sawa.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas. Dito ang unang paglitaw ng 'Python' sa unang linya ay pinalitan ng 'perl'.
6. Palitan ang huling tugma sa isang file ng bagong teksto
Papalitan ng sumusunod na utos ang huling paglitaw ng pattern ng paghahanap, ‘Python 'Sa pamamagitan ng teksto, 'Bash'. Dito, '$' ginamit ang simbolo upang tumugma sa huling paglitaw ng pattern.
$ cat python.txt$ sed -e'$ s / Python / Bash /'sawa.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas.
7. Ang pagtakas sa backslash upang palitan ang mga utos upang pamahalaan ang paghahanap at palitan ang mga file path
Kinakailangan upang makatakas sa backslash sa file path para sa paghahanap at pagpapalit. Ang sumusunod na utos ng `sed` ay magdaragdag ng backslash () sa file path.
$itinapon /bahay/ubuntu/code/perl/idagdag.pl| sed 's; /; \ /; g'Output:
Ang path ng file, ‘/ Home/ubuntu/code/perl/add.pl ' ay ibinigay bilang input sa `sed` utos at ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas.
8. Palitan ang lahat ng mga file ng buong landas na may filename lamang na walang direktoryo
Maaaring makuha ang filename mula sa file path nang napakadali sa pamamagitan ng paggamit ng ` basename` utos Ang utos na `sed` ay maaari ding magamit upang makuha ang filename mula sa file path. Ang sumusunod na utos ay kukuha lamang ng filename mula sa file path na ibinigay ng `echo` command.
$itinapon '/home/ubuntu/temp/myfile.txt' | sed 's /.*///'Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas. Dito, ang filename, ‘ myfile.txt ’ ay nakalimbag bilang output.
9. Kapalit ng teksto ngunit kung ang ilang iba pang teksto ay matatagpuan sa string
Lumikha ng isang file na pinangalanang ‘ dept.txt ’ kasama ang sumusunod na nilalaman upang mapalitan ang anumang teksto batay sa ibang teksto.
dept.txt
Listahan ng Kabuuang Mga Mag-aaral:
CSE - BilanginEEE - Bilangin
Sibil - Bilangin
Ginagamit ang dalawang utos na kapalit sa sumusunod na `sed` na utos. Dito, ang teksto, ‘ Bilangin ‘Mapapalitan ng 100 sa linya na naglalaman ng teksto, ‘CSE ‘At ang teksto,‘ Bilangin ’ papalitan ng 70 sa linya na naglalaman ng pattern ng paghahanap, ‘ EEE ’ .
$pusadept.txt$sed -At '/ CSE / s / Count / 100 /; / EEE / s / Bilang / 70 /; 'dept.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos ng pagpapatakbo ng mga utos sa itaas.
10. Kapalit na teksto ngunit kung ang ilang iba pang teksto ay hindi matatagpuan sa string
Papalitan ng sumusunod na utos na `sed` ang halagang 'Bilangin' sa linya na hindi naglalaman ng teksto, 'CSE'. dept.txt Naglalaman ang file ng dalawang linya na hindi naglalaman ng teksto, ang 'CSE'. Kaya ang ' Bilangin ‘Text ay papalitan ng 80 sa dalawang linya.
$pusadept.txt$sed -ako -At '/ CSE /! s / Count / 80 /; 'dept.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas.
11. Magdagdag ng string bago at pagkatapos ng pagtutugma ng pattern gamit ang ‘ 1’
Ang pagkakasunud-sunod ng mga tumutugma na pattern ng utos ng `sed` ay naipakilala ng ' 1', ' 2' at iba pa. Ang sumusunod na 'sed` na utos ay maghanap sa pattern, 'Bash' at kung ang pattern ay tumutugma pagkatapos ay maa-access ito ng ' 1' sa bahagi ng pagpapalit ng teksto. Dito, ang teksto, 'Bash' ay hinanap sa input text at, isang teksto ang naidagdag dati at isa pang teksto ang naidagdag pagkatapos ng ' 1'.
$itinapon 'Bash wika' | sed 's / (Bash ) / Alamin 1 na programa /'Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas. Dito, ‘ Alamin ’ ang teksto ay idinagdag bago 'Bash' at ‘ programa 'Teksto ay idinagdag pagkatapos ng' Bash ’.
12. Tanggalin ang mga tumutugma na linya
‘D’ Ginagamit ang pagpipilian sa utos na `sed` upang tanggalin ang anumang linya mula sa file. Lumikha ng isang file na pinangalanan os.txt at idagdag ang sumusunod na nilalaman upang subukan ang pagpapaandar ng ‘D’ pagpipilian
pusa os.txt
WindowsLinux
Android
IKAW
Tatanggalin ng sumusunod na utos na `sed` ang mga linyang iyon os.txt file na naglalaman ng teksto, 'OS'.
$pusaos.txt$sed '/ The D'os.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas.
13. Tanggalin ang katugmang linya at 2 linya pagkatapos ng pagtutugma ng linya
Tatanggalin ng sumusunod na utos ang tatlong mga linya mula sa file os.txt kung ang pattern, ‘ Linux ' ay natagpuan. naglalaman ang os.txt ng teksto, ‘Linux ‘Sa pangalawang linya. Kaya, ang linyang ito at ang susunod na dalawang linya ay tatanggalin.
$sed '/ Linux /, + 2d'os.txtOutput:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas.
14. Tanggalin ang lahat ng mga puwang sa dulo ng linya ng teksto
Gamit [: blangko:] magagamit ang klase upang alisin ang mga puwang at tab mula sa teksto o sa nilalaman ng anumang file. Aalisin ng sumusunod na utos ang mga puwang sa dulo ng bawat linya ng file, os.txt
$pusaos.txt$sed 's / [[: blank:]] * $ //'os.txt
Output:
os.txt naglalaman ng mga walang laman na linya pagkatapos ng bawat linya sa mga natanggal ng utos ng `sed` sa itaas.
15. Tanggalin ang lahat ng mga linya na may isang tugma ng dalawang beses sa linya
Lumikha ng isang text file na pinangalanang, input.txt kasama ang sumusunod na nilalaman at tanggalin ang mga linya ng file na naglalaman ng pattern ng paghahanap ng dalawang beses.
input.txt
Ang PHP ay isang wika ng script sa panig ng server.
Ang PHP ay isang open-source na wika at ang PHP ay case-sensitive.
Ang PHP ay malaya sa platform.
Ang teksto na 'PHP' ay naglalaman ng dalawang beses sa pangalawang linya ng file, input.txt . Ginagamit ang halimbawang `sed` sa halimbawang ito upang alisin ang mga linyang naglalaman ng pattern na‘ php ' dalawang beses. Papalitan ng unang `sed` na utos ang pangalawang paglitaw ng 'php' sa bawat linya ng ' dl ‘At ipadala ang output sa ikalawang` sed` utos bilang input. Tatanggalin ng pangalawang utos ng `sed` ang mga linyang naglalaman ng teksto,‘ dl '.
$pusainput.txt$sed 's / php / dl / i2; t'input.txt| sed '/ dl / d'
Output:
input.txt ang file ay may dalawang linya na naglalaman ng pattern, 'Php' dalawang beses. Kaya, lilitaw ang sumusunod na output pagkatapos patakbuhin ang mga utos sa itaas.
16. Tanggalin ang lahat ng mga linya na mayroon lamang puting-puwang
Piliin ang anumang file na naglalaman ng mga walang laman na linya sa nilalaman upang subukan ang halimbawang ito. input.txt file na nilikha sa nakaraang halimbawa, naglalaman ng dalawang walang laman na mga linya na maaaring matanggal sa pamamagitan ng paggamit ng sumusunod na `sed` na utos. Dito, ginagamit ang '^ $' upang malaman ang mga walang laman na linya sa file, input.txt.
$pusainput.txt$sed '/ ^ $ / d'input.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas.
17. Tanggalin ang lahat ng mga hindi nai-print na character
Ang mga hindi nai-print na character ay maaaring tanggalin mula sa anumang teksto sa pamamagitan ng pagpapalit ng hindi nai-print na mga character ng wala. Ginamit ang klase ng [: print:] sa halimbawang ito upang malaman ang mga hindi nai-print na character. Ang ‘ t’ ay isang hindi nai-print na character at hindi ito maaaring mai-parse nang direkta ng utos ng `echo`. Para dito, ang character na ‘ t’ ay itinalaga sa isang variable, $ tab na ginagamit sa isang `echo` na utos. Ang output ng utos ng `echo` ay ipinapadala sa utos na` sed` na aalisin ang character, ‘ t’ mula sa output.
$tab= $' t'$itinapon 'Kamusta$ tabWorld'
$itinapon 'Kamusta$ tabWorld' | sed 's / [^ [: print:]] // g'
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas. Ang unang `echo command ay i-print ang output sa tab space at ang` sed` na utos ay mai-print ang output pagkatapos alisin ang espasyo ng tab.
18. Kung mayroong isang tugma sa linya idagdag ang isang bagay upang tapusin ang linya
Ang sumusunod na utos ay idadagdag '10' sa dulo ng linya na naglalaman ng teksto, 'Windows' sa os.txt file
$pusaos.txt$sed '/ Windows / s / $ / 10 /'os.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos.
19. Kung mayroong isang tugma sa linya maglagay ng isang linya bago ang teksto
Ang sumusunod na `sed` na utos ay maghanap sa teksto,‘ Ang PHP ay malaya sa platform ’ nasa input.txt file na nilikha dati. Kung naglalaman ang file ng tekstong ito sa anumang linya kung gayon, ‘ Ang PHP ay isang interpretadong wika ’ ay ipasok bago ang linya na iyon.
$pusainput.txt$sed Ang '/ PHP ay platform-independent / s / ^ / Ang PHP ay isang interpretadong wika. N /'input.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas.
20. Kung mayroong isang tugma sa linya ipasok ang isang linya pagkatapos ng linyang iyon
Ang sumusunod na `sed` na utos ay maghanap sa teksto,‘ Linux ' sa file os.txt at kung ang teksto ay mayroon sa anumang linya pagkatapos ng isang bagong teksto, ‘ Ubuntu ‘Isisingit pagkatapos ng linyang iyon.
$pusaos.txt$sed 's / Linux / & nUbuntu /'os.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas.
21. Kung walang tugma idagdag ang isang bagay sa dulo ng linya
Ang sumusunod na 'sed` na utos ay hahanapin ang mga linya sa os.txt hindi naglalaman ng teksto, 'Linux' at idugtong ang teksto, ‘ Operating System ‘Sa dulo ng bawat linya. Dito, ‘ $ Ginagamit ang simbolo na ‘upang kilalanin ang linya kung saan idadagdag ang bagong teksto.
$pusaos.txt$sed '/ Linux /! S / $ / Operating System / 'os.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas. Tatlong linya ang umiiral sa file na os.txt na hindi naglalaman ng teksto, 'Linux' at mga bagong teksto na idinagdag sa dulo ng mga linyang ito.
22. Kung walang tugma tanggalin ang linya
Lumikha ng isang file na pinangalanan web.txt at idagdag ang sumusunod na nilalaman at tanggalin ang mga linya na hindi naglalaman ng pagtutugma ng pattern. web.txt HTML 5JavaScriptCSSPHPMySQLJQuery Ang sumusunod na 'sed` na utos ay hahanapin at tatanggalin ang mga linya na hindi naglalaman ng teksto, 'CSS'. $ cat web.txt $ sed ‘/ CSS /! d’ web.txt Output: Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas. Mayroong isang linya na umiiral sa file na naglalaman ng teksto, 'CSE'. Kaya, ang output ay naglalaman lamang ng isang linya.
23. I-duplicate ang katugmang teksto pagkatapos magdagdag ng isang puwang pagkatapos ng teksto
Ang sumusunod na 'sed` na utos ay maghanap ng salita, 'to' sa file, sawa.txt at kung umiiral ang salitang magkakapareho ang parehong salita ay maipapasok pagkatapos ng salitang paghahanap sa pamamagitan ng pagdaragdag ng puwang. Dito, '&' ginamit ang simbolo upang idugtong ang dobleng teksto.
$pusasawa.txt$sed -At 's / to / & to / g'sawa.txt
Output:
Lilitaw ang sumusunod na output pagkatapos patakbuhin ang mga utos. Dito, ang salita, 'to' ay hinanap sa file, sawa.txt at ang salitang ito ay umiiral sa pangalawang linya ng file na ito. Kaya, ‘To ’Na may puwang ay idinagdag pagkatapos ng pagtutugma ng teksto.
24. Palitan ang isang listahan ng mga string ng bagong string
Kailangan mong lumikha ng dalawang listahan ng mga file para sa pagsubok sa halimbawang ito. Lumikha ng isang text file na pinangalanan list1.txt at idagdag ang sumusunod na nilalaman.
listahan ng pusa1.txt
1001=>Jafar Ali1023=>Nir Hossain
1067=>John michel
Lumikha ng isang text file na pinangalanan list2.txt at idagdag ang sumusunod na nilalaman.
$ cat list2.txt
1001CSE GPA3.631002CSE GPA3.24
1023CSE GPA3.11
1067CSE GPA3.84
Ang sumusunod na 'sed` na utos ay tutugma sa unang haligi ng dalawang mga file ng teksto na ipinakita sa itaas at palitan ang katugmang teksto sa halaga ng pangatlong haligi ng file list1.txt.
$pusalist1.txt$pusalist2.txt
$sed 'pusalist1.txt| ang awkward '{print' -e s / '$ 1' / '$ 3' / '}''<<<'`listahan ng pusa2.txt`'
Output:
1001, 1023 at 1067 ng list1.txt tumutugma ang file sa tatlong data ng list2.txt file at ang mga halagang ito ay pinalitan ng kaukulang mga pangalan ng pangatlong haligi ng list1.txt .
25. Palitan ang katugmang string ng isang string na naglalaman ng mga newline
Ang sumusunod na utos ay kukuha ng input mula sa utos ng `echo` at hahanapin ang salita, 'Python' sa teksto. Kung ang salita ay umiiral sa teksto pagkatapos ng isang bagong teksto, 'Nagdagdag ng Teksto' isisingit ng newline. $ echo Bash Perl Python Java PHP ASP | sed ‘s / Python / Nagdagdag ng Teksto n /’ Output: Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas.
26. Alisin ang mga newline mula sa file at maglagay ng kuwit sa dulo ng bawat linya
Ang sumusunod na `sed` na utos ay papalitan ang bawat newline ng isang kuwit sa file os.txt . Dito, -Nga Ginagamit ang pagpipilian upang paghiwalayin ang linya sa pamamagitan ng Null character.
$sed -Nga 's / n /, / g'os.txtOutput:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas.
27. Alisin ang mga kuwit at magdagdag ng newline upang hatiin ang teksto sa maraming mga linya
Ang sumusunod na `sed` na utos ay kukuha ng linya na pinaghiwalay ng kuwit mula sa utos na` echo` bilang input at papalitan ang kuwit sa pamamagitan ng newline.
$itinapon 'Kaniz Fatema, ika-30, batch' | sed 's /, / n/ g 'Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas. Naglalaman ang input text ng tatlong kuwit na pinaghiwalay ng kuwit na pinalitan ng newline at nakalimbag sa tatlong linya.
28. Humanap ng case insensitive match at tanggalin ang linya
Ginamit ang 'I' sa `sed` na utos para sa case-insensitive match na nagsasaad ng kaso na huwag pansinin. Ang sumusunod na 'sed` na utos ay maghanap sa linya na naglalaman ng salita, ‘Linux ‘At tanggalin ang linya mula sa os.txt file
$pusaos.txt$sed '/ linux / Id'os.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas. Naglalaman ang os.txt ng salitang, 'Linux' na tumugma sa pattern, 'linux' para sa case-insensitive na paghahanap at tinanggal.
29. Humanap ng case insensitive match at palitan ng bagong teksto
Ang sumusunod na `sed` na utos ay kukuha ng input mula sa` echo` na utos at palitan ang salitang, 'bash' ng salitang, 'PHP'.
$itinapon 'Gusto ko ng bash program' | sed 's / Bash / PHP / i'Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas. Dito, ang salitang, 'Bash' ay tumugma sa salitang, 'bash' para sa case-insensitive na paghahanap at pinalitan ng salitang, 'PHP'.
30. Humanap ng case insensitive match at palitan ng lahat ng malalaking titik ng parehong teksto
‘ U’ ay ginagamit sa `sed` upang mai-convert ang anumang teksto sa lahat ng malalaking titik. Ang sumusunod na 'sed` na utos ay maghanap ng salita, ‘Linux ' nasa os.txt file at kung ang salita ay mayroon pagkatapos ay papalitan nito ang salita ng lahat ng malalaking titik.
$pusaos.txt$sed 's / (linux ) / U 1 / Ig'os.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas. Ang salitang, 'Linux' ng os.txt file ay pinalitan ng salitang, 'LINUX'.
31. Humanap ng case insensitive match at palitan ng lahat ng maliliit na parehong teksto
' THE' ay ginagamit sa `sed` upang mai-convert ang anumang teksto sa lahat ng mga maliliit na titik. Ang sumusunod na 'sed` na utos ay maghanap ng salita, 'Linux' nasa os.txt file at palitan ang salita ng lahat ng mga maliliit na titik.
$pusaos.txt$sed 's / (linux ) / L 1 / Ig'os.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas. Ang salitang, 'Linux' ay pinalitan ng salitang, 'linux' dito.
32. Palitan ang lahat ng malalaking character ng teksto ng mga maliliit na character
Ang sumusunod na 'sed` na utos ay maghanap sa lahat ng malalaking character sa os.txt file at palitan ang mga character sa pamamagitan ng maliliit na titik sa pamamagitan ng paggamit ng ' L'.
$pusaos.txt$sed 's / (. * ) / L 1 /'os.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas.
33. Maghanap ng numero sa linya at idagdag ang anumang simbolo ng pera bago ang numero
Lumikha ng isang file na pinangalanan mga item.txt kasama ang sumusunod na nilalaman.
mga item.txt
HDD 100Subaybayan 80
Mouse 10
Ang sumusunod na `sed` na utos ay hahanapin ang numero sa bawat linya ng mga item.txt file at idagdag ang simbolo ng pera, '$' bago ang bawat numero.
$pusamga item.txt$sed 's / ([0-9] ) / $ 1 / g'mga item.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas. Dito, idinagdag ang simbolong '$' bago ang bilang ng bawat linya.
34. Magdagdag ng mga kuwit sa mga numero na mayroong higit sa 3 mga digit
Ang sumusunod na 'sed` na utos ay kukuha ng isang bilang input mula sa` echo` na utos at magdagdag ng kuwit pagkatapos ng bawat pangkat ng tatlong mga digit na nagbibilang mula sa kanan. Dito, ipinapahiwatig ng ': a' ang label at 'ta' ay ginagamit upang umulit sa proseso ng pagpapangkat.
$itinapon '5098673' | sed -At: sa-At 's / (. * [0-9] ) ([0-9] {3 } ) / 1, 2 /; ta'Output:
Ang bilang na 5098673 ay ibinigay sa utos ng `echo` at ang utos na` sed` ay nakabuo ng bilang na 5,098,673 sa pamamagitan ng pagdaragdag ng kuwit pagkatapos ng bawat pangkat na may tatlong mga digit.
35. Pinapalitan ang character na tab na may 4 na character na space
Ang sumusunod na `sed` na utos ay papalitan ang bawat tab ( t) na character ng apat na mga character na puwang. Ginagamit ang simbolong '$' sa utos na `sed` upang itugma ang character na tab at ang 'g' ay ginagamit upang palitan ang lahat ng mga character sa tab.
$itinapon -At '1 t2 t3 ' | sed$'s / t / / g'Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas.
36. Pinapalitan ang magkasunod na mga character na space na may character na tab
Papalitan ng sumusunod na utos ang 4 na magkakasunod na character ng tab na ( t) character.
$itinapon -At '1 2' | sed$'s / / t / g'Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas.
37. Putulin ang lahat ng mga linya sa unang 80 mga character
Lumikha ng isang text file na pinangalanan sa.txt na naglalaman ng mga linya ng higit sa 80 mga character upang subukan ang halimbawang ito.
sa.txt
Ang PHP ay isang wika ng script sa panig ng server.
Ang PHP ay isang open-source na wika at ang PHP ay case-sensitive. Ang PHP ay malaya sa platform.
Ang sumusunod na `sed` na utos ay magpapawasak sa bawat linya ng sa.txt file sa 80 character.
$sed 's / (^. {1,80 } ). * / 1 /'sa.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas. Ang pangalawang linya ng in.txt file ay naglalaman ng higit sa 80 mga character at ang linyang ito ay pinutol sa output.
38. Maghanap para sa isang string regex at idagdag ang ilang karaniwang teksto pagkatapos nito
Ang sumusunod na `sed` na utos ay maghanap sa teksto,‘ Kamusta ‘Sa input text at idugtong ang teksto,‘ John ‘Pagkatapos ng text na iyon.
$itinapon 'hello, kumusta ka?' | sed 's / (hello ) / 1 John /'Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas.
39. Maghanap para sa string regex at idagdag ang ilang teksto pagkatapos ng ikalawang tugma sa bawat linya
Ang sumusunod na `sed` na utos ay maghanap sa teksto,‘ PHP ‘Sa bawat linya ng input.txt at palitan ang pangalawang tugma sa bawat linya ng teksto, 'Naidagdag na Bagong Teksto' .
$pusainput.txt$sed 's / (PHP ) / 1 (Naidagdag ang Bagong Teksto) / 2'input.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas. Ang naghahanap na teksto, ‘ PHP 'Lilitaw ng dalawang beses sa pangalawa at pangatlong linya ng input.txt file Kaya, ang teksto, ‘ Nagdagdag ng Bagong Teksto ’Ay ipinasok sa ikalawa at pangatlong linya.
40. Pagpapatakbo ng mga multi-line `sed` script mula sa isang file
Ang maramihang mga `sed` script ay maaaring maiimbak sa isang file at ang lahat ng mga script ay maaaring isagawa nang sama-sama sa pamamagitan ng pagpapatakbo ng` sed` na utos. Lumikha ng isang file na pinangalanan ‘Sedcmd ‘At idagdag ang sumusunod na nilalaman. Dito, dalawang `sed` script ang naidagdag sa file. Isang script ang papalit sa teksto, ‘ PHP ‘Ni ‘ASP ‘Ibang script ang papalit sa teksto,‘ malaya 'Sa pamamagitan ng teksto,' umaasa '.
sedcmd
s/PHP/ASP/s/malaya/umaasa/
Ang sumusunod na `sed` na utos ay papalit sa lahat ng teksto na 'PHP' at 'independiyenteng' teksto ng 'ASP' at 'dependant'. Dito, ang pagpipiliang '-f' ay ginagamit sa utos na `sed` upang maipatupad ang` sed` script mula sa file.
$pusasedcmd$sed -fsedcmd input.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos tumakbo sa itaas ng mga utos.
41. Itugma ang isang pattern ng multi-line at palitan ng bagong teksto na maraming linya
Ang sumusunod na 'sed` na utos ay maghanap sa teksto ng maraming linya, 'Linux nAndroid' at kung ang pattern ay tumutugma sa gayon ang mga tumutugma na linya ay papalitan ng teksto ng multi-line, 'Ubuntu nAndroid Lollipop ‘. Dito, ang P at D ay ginagamit para sa pagproseso ng multiline.
$pusaos.txt$sed '$! N; s / Linux nAndoid / Ubuntu nAndoid Lollipop /; P; D'os.txt
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas.
42. Palitan ang pagkakasunud-sunod ng dalawang salita sa isang teksto na tumutugma sa isang pattern
Ang sumusunod na `sed` na utos ay kukuha ng input ng dalawang salita mula sa` echo` na utos at papalitan ang pagkakasunud-sunod ng mga salitang ito.
$itinapon 'perl python' | sed -At 's / ([^] * ) * ([^] * ) / 2 1 /'Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas.
43. Ipatupad ang maramihang mga `sed` na utos mula sa command-line
Ginagamit ang pagpipiliang '-e' sa utos ng `sed` upang patakbuhin ang maramihang mga` sed` script mula sa linya ng utos. Ang sumusunod na 'sed` na utos ay kukuha ng isang teksto bilang input mula sa` echo` na utos at papalitan ang ' Ubuntu 'Ni' Kubuntu ‘At‘ daan-daang 'Ni' Fedora '.
$itinapon 'Ubuntu Centos Debian' | sed -At 's / Ubuntu / Kubuntu /; s / Centos / Fedora / 'Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas. Dito, ang 'Ubuntu' at 'Centos' ay pinalitan ng 'Kubuntu' at 'Fedora'.
44. Pagsamahin ang `sed` sa iba pang mga utos
Ang mga sumusunod na utos ay pagsamahin ang utos ng `sed` sa` cat` na utos. Ang unang `sed` na utos ay kukuha ng input mula sa os.txt file at ipadala ang output ng utos sa pangalawang `sed` utos pagkatapos palitan ang teksto ng 'Linux' ng 'Fedora'. Ang pangalawang utos ng `sed` ay papalitan ang teksto, 'Windows' ng 'Windows 10'.
$pusaos.txt| sed 's / Linux / Fedora /'| sed 's / windows / Windows 10 / i'Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas.
45. Ipasok ang walang laman na linya sa isang file
Lumikha ng isang file na pinangalanan stdlist kasama ang sumusunod na nilalaman.
stdlist
#ID #Name[101] -Ngunit
[102] -Neha
Ginagamit ang pagpipiliang 'G' upang ipasok ang walang laman na linya sa isang file. Ang sumusunod na `sed` na utos ay maglalagay ng walang laman na mga linya pagkatapos ng bawat linya ng stdlist file
$pusastdlist$sedG stdlist
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas. Ang isang walang laman na linya ay ipinasok pagkatapos ng bawat linya ng file.
46. Palitan ang lahat ng mga alpha-numeric character sa pamamagitan ng puwang sa bawat linya ng isang file.
Ang sumusunod na utos ay papalitan ang lahat ng mga alpha-numeric na character sa puwang sa stdlist file
$pusastdlist$ pero 's / [A-Za-z0-9] // g'stdlist
Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang mga utos sa itaas.
47. Gumamit ng ‘&’ upang mai-print ang naitugmang string
Hahanapin ng sumusunod na utos ang salitang nagsisimula sa 'L' at papalitan ang teksto sa pamamagitan ng pagdaragdag 'Matched String ay - ‘Sa katugmang salita sa pamamagitan ng paggamit ng simbolong‘ & ’. Dito, ginagamit ang 'p' upang mai-print ang binagong teksto.
$sed -n 's / ^ L / Ang Katugmang String ay - & / p'os.txtOutput:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas.
48. Lumipat ng pares ng mga salita sa isang file
Lumikha ng isang text file na pinangalanan kurso.txt kasama ang sumusunod na nilalaman na naglalaman ng pares ng mga salita sa bawat linya.
kurso.txt
PHP ASPMySQL Oracle
CodeIgniter Laravel
Ang sumusunod na utos ay magpapalit ng pares ng mga salita sa bawat linya ng file, kurso.txt .
$sed 's / ([^] * ) * ([^] * ) / 2 1 /'kurso.txtOutput:
Ang sumusunod na output ay lilitaw pagkatapos lumipat ng pares ng mga salita sa bawat linya.
49. I-capitalize ang unang katangian ng bawat salita
Ang sumusunod na `sed` na utos ay kukuha ng teksto ng pag-input mula sa 'echo` na utos at i-convert ang unang karakter ng bawat salita sa isang malaking titik.
$itinapon 'Gusto ko ng bash program' | sed 's / ([a-z] ) [[a-zA-Z0-9] * ) / u 1 2 / g'Output:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas. Ang teksto ng pag-input, gusto ko ang bash program ay nai-print bilang Gusto ko ng Bash Programming pagkatapos ng paggamit ng malaking salita sa unang salita.
50. I-print ang mga numero ng linya ng file
Ginamit ang simbolong ‘=’ na `sed` na utos upang mai-print ang numero ng linya bago ang bawat linya ng isang file. Ang sumusunod na utos ay mai-print ang nilalaman ng os.txt file na may numero ng linya.
$sed '='os.txtOutput:
Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas. Mayroong apat na linya sa os.txt file Kaya, ang numero ng linya ay naka-print bago ang bawat linya ng file.
Konklusyon:
Ang iba't ibang paggamit ng `sed` na utos ay ipinaliwanag sa tutorial na ito sa pamamagitan ng paggamit ng napakasimpleng mga halimbawa. Ang output ng lahat ng `sed` script na nabanggit dito ay nabubuo pansamantala at ang nilalaman ng orihinal na file ay nanatiling hindi nagbabago. Ngunit kung nais mo maaari mong baguhin ang orihinal na file sa pamamagitan ng paggamit ng –i o –sa-lugar na pagpipilian ng `sed command. Kung ikaw ay isang bagong gumagamit ng Linux at nais mong malaman ang pangunahing paggamit ng `sed` na utos upang magsagawa ng iba't ibang mga uri ng mga gawain sa pagmamanipula ng string, kung gayon makakatulong sa iyo ang tutorial na ito. Matapos basahin ang tutorial na ito, umaasa, makakakuha ang sinumang gumagamit ng malinaw na konsepto tungkol sa mga pagpapaandar ng `sed` na utos.
Mga Madalas Itanong
Ano ang ginagamit sa utos na sed?
Ang sed command ay may bilang ng magkakaibang paggamit. Sinabi na, ang pangunahing paggamit ay para sa pagpapalit ng mga salita sa isang file, o paghahanap at pagpapalit.
Ang mahusay na bagay tungkol sa sed ay maaari kang maghanap para sa isang salita sa isang file at palitan ito, ngunit hindi mo na kailangang buksan ang file - ginagawa lamang ng lahat para sa iyo!
Pati na rin ito, maaari itong magamit para sa pagtanggal. Ang kailangan mo lang gawin ay i-type ang salitang nais mong hanapin, palitan o tanggalin sa sed, at ilalabas ito para sa iyo - maaari mo ring piliing palitan ang salitang iyon o tanggalin ang lahat ng mga bakas ng salita mula sa iyong file.
sed ay isang kamangha-manghang tool upang mapalitan ang mga bagay tulad ng mga IP address at anumang bagay na lubos na sensitibo na hindi mo nais na ilagay sa isang file. sed ay isang dapat-malaman para sa anumang software engineer!
Ano ang S at G sa sed command?
Sa pinakasimpleng termino nito, ang pagpapaandar ng S na maaaring magamit sa sed ay nangangahulugang 'kapalit'. Matapos i-type ang S maaari mong palitan o palitan ang anumang nais mo - ang pagta-type lamang ng S ay papalitan lamang ang unang paglitaw ng salita sa isang linya.
Samakatuwid, kung mayroon kang isang pangungusap o linya na binabanggit ito nang higit sa isang beses, ang pagpapaandar ng S ay hindi perpekto sapagkat papalitan lamang nito ang unang paglitaw. Maaari mong tukuyin ang isang pattern upang gawing S ang pagpapalit ng mga salita sa bawat dalawang mga pangyayari din.
Ang pagtukoy ng G sa pagtatapos ng utos ng sed ay gagawa ng isang pandaigdigang kapalit (iyon ang kinakatawan ng G). Sa pag-iisip na ito, kung tinukoy mo ang G papalitan nito ang bawat paglitaw ng salitang iyong pinili, sa halip na ang unang pangyayari lamang na ginagawa ng S.
Paano ako tatakbo ng isang sed script?
Maaari kang magpatakbo ng isang sed script sa isang bilang ng mga paraan ngunit ang pinaka-karaniwan ay nasa linya ng utos. Dito maaari mo lamang tukuyin ang sed at ang file na nais mong gamitin sa utos.
Pinapayagan kang gumamit ng sed sa file na iyon, na nagbibigay-daan sa iyo upang makahanap, magtanggal at magpalit kung kinakailangan.
Maaari mo ring gamitin ito sa isang shell script, at sa ganitong paraan maaari mong maipasa ang anumang gusto mo sa script, at tatakbo ito sa paghahanap at palitan ang utos para sa iyo. Kapaki-pakinabang ito para sa hindi pagnanais na tukuyin ang lubos na sensitibong data sa loob ng isang script, kaya sa halip, maipapasa mo ito bilang isang variable
Tandaan na ito ay syempre magagamit lamang sa Linux, at sa gayon kakailanganin mong tiyakin na mayroon kang isang linya ng utos ng Linux upang mapatakbo ang iyong sed script.