50 `ngunit` Mga Halimbawa ng Utos

50 Sed Command Examples



Ang `sed` ay isang kapaki-pakinabang na tampok sa pagproseso ng teksto ng GNU / Linux. Ang buong anyo ng `sed` ay Stream Editor. Maraming uri ng simple at kumplikadong mga gawain sa pagpoproseso ng teksto ang maaaring gawin nang napakadali sa pamamagitan ng paggamit ng `sed` na utos. Ang anumang partikular na string sa isang teksto o isang file ay maaaring hanapin, palitan at tanggalin sa pamamagitan ng paggamit ng regular na expression na may `sed command. Ngunit ang mga utos na ito ay gumaganap pansamantala sa lahat ng mga uri ng pagbabago at ang orihinal na nilalaman ng file ay hindi binago bilang default. Maaaring iimbak ng gumagamit ang binagong nilalaman sa ibang file kung kinakailangan. Ang pangunahing paggamit ng 'sed` utos ay ipinaliwanag sa tutorial na ito sa pamamagitan ng paggamit ng 50 natatanging mga halimbawa. Bago simulan ang tutorial na ito kailangan mong suriin ang naka-install na bersyon ng' sed` sa iyong operating system sa pamamagitan ng pagpapatakbo ng sumusunod na utos. Ang tutorial ay dinisenyo batay sa GNU sed. Kaya't ang bersyon na ito ng `sed` ay kinakailangan upang sanayin ang mga halimbawang ipinakita sa tutorial na ito.

$sed --versi

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 :

  1. Pangunahing pagpapalit ng teksto gamit ang ‘sed’
  2. Palitan ang lahat ng mga pagkakataon ng isang teksto sa isang partikular na linya ng isang file sa pamamagitan ng paggamit ng opsyong ‘g’
  3. Palitan ang pangalawang paglitaw lamang ng isang tugma sa bawat linya
  4. Palitan lamang ang huling paglitaw ng isang tugma sa bawat linya
  5. Palitan ang unang tugma sa isang file ng bagong teksto
  6. Palitan ang huling tugma sa isang file ng bagong teksto
  7. Ang pagtakas sa backslash upang palitan ang mga utos upang pamahalaan ang paghahanap at palitan ang mga file path
  8. Palitan ang lahat ng mga file ng buong landas na may filename lamang na walang direktoryo
  9. Kapalit ng teksto ngunit kung ang ilang iba pang teksto ay matatagpuan sa string
  10. Kapalit ng teksto ngunit kung ang ilang iba pang teksto ay hindi matatagpuan sa string
  11. Magdagdag ng string bago pagkatapos ng pagtutugma na pattern gamit ang ‘ 1 '
  12. Tanggalin ang mga tumutugma na linya
  13. Tanggalin ang katugmang linya at 2 linya pagkatapos ng pagtutugma ng linya
  14. Tanggalin ang lahat ng mga puwang sa dulo ng linya ng teksto
  15. Tanggalin ang lahat ng mga linya na may isang tugma ng dalawang beses sa linya
  16. Tanggalin ang lahat ng mga linya na may tanging whitespace
  17. Tanggalin ang lahat ng mga hindi nai-print na character
  18. Kung mayroong isang tugma sa linya idagdag ang isang bagay upang tapusin ang linya
  19. Kung mayroong isang tugma sa linya ng insert insert bago ang laban
  20. Kung mayroong isang tugma sa linya ng insert insert pagkatapos ng tugma
  21. Kung walang isang tugma idagdag ang isang bagay sa dulo ng linya
  22. Kung walang tugma tanggalin ang linya
  23. I-duplicate ang katugmang teksto pagkatapos magdagdag ng isang puwang pagkatapos ng teksto
  24. Palitan ang isa sa isang listahan ng mga string gamit ang bagong string
  25. Palitan ang isang tugmang string ng isang string na naglalaman ng mga newline
  26. Alisin ang mga newline mula sa file at maglagay ng isang kuwit sa dulo ng bawat linya
  27. Alisin ang mga kuwit at magdagdag ng mga bagong linya upang hatiin ang teksto sa maraming mga linya
  28. Humanap ng insensitive match at tanggalin ang linya ng kaso
  29. Maghanap ng case insensitive match at palitan ng bagong teksto
  30. Humanap ng case insensitive match at palitan ng lahat ng malalaking titik ng parehong teksto
  31. Humanap ng case insensitive match at palitan ng lahat ng maliliit na parehong teksto
  32. Palitan ang lahat ng malalaking character sa teksto ng mga maliliit na character
  33. Maghanap para sa numero sa linya at idagdag ang simbolo ng pera pagkatapos ng numero
  34. Magdagdag ng mga kuwit sa mga numero na mayroong higit sa 3 mga digit
  35. Palitan ang mga character ng tab sa 4 na character na space
  36. Palitan ang magkakasunod na mga character na space na may isang character na tab
  37. Putulin ang lahat ng mga linya sa unang 80 mga character
  38. Maghanap para sa isang string regex at idagdag ang ilang karaniwang teksto pagkatapos nito
  39. Maghanap para sa isang string regex at isang pangalawang kopya ng nahanap na string pagkatapos nito
  40. Pagpapatakbo ng mga multi-line `sed` script mula sa isang file
  41. Itugma ang isang pattern na multi-line at palitan ng bagong teksto na maraming linya
  42. Palitan ang pagkakasunud-sunod ng dalawang salita na tumutugma sa isang pattern
  43. Gumamit ng maraming mga sed utos mula sa command-line
  44. Pagsamahin ang sed sa iba pang mga utos
  45. Magpasok ng isang walang laman na linya sa isang file
  46. Tanggalin ang lahat ng mga alpha-numerong character mula sa bawat linya ng isang file.
  47. Gumamit ng ‘&’ upang tumugma sa string
  48. Lumipat pares ng mga salita
  49. I-capitalize ang unang karakter ng bawat salita
  50. 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

Lunes
Martes
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.

Pumunta sa tuktok

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'.

Pumunta sa tuktok

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.txt

Output:

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 '.

Pumunta sa tuktok

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.

$sed 's / (. * ) Programming / 1Scripting /'lang.txt

Pumunta sa tuktok

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'.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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 - Bilangin
EEE - 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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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 ’.

Pumunta sa tuktok

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

Windows
Linux
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.

Pumunta sa tuktok

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.txt

Output:

Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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 Ali
1023=>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.63
1002CSE 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 .

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.txt

Output:

Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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'.

Pumunta sa tuktok

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'.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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 100
Subaybayan 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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

$pusasa.txt
$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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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'.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.txt

Output:

Ang sumusunod na output ay lilitaw pagkatapos patakbuhin ang utos sa itaas.

Pumunta sa tuktok

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 ASP
MySQL 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.txt

Output:

Ang sumusunod na output ay lilitaw pagkatapos lumipat ng pares ng mga salita sa bawat linya.

Pumunta sa tuktok

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.

Pumunta sa tuktok

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.txt

Output:

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.

Pumunta sa tuktok

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.