🐧 Как Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SED Π½Π° Linux

by itisgood

Π’ этом руководствС Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SED Π½Π° Linux.

По словам man sed, Sed – Β stream editor.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ sed Π² linux, возьмСм, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π½ΠΈΠΆΠ΅ содСрТимым:

cat /tmp/lines
This is line1
#This is line2
This is line3
#line4
This is line5
This is line6
#My line7
This is line8
This is line9
This is line10
This is line11
Your is line12
This is line13
This is line14
#Their line15
This is line16
This is line17
#This is line18
This is line19
This is line20

Π‘Ρ‹Π» Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ряд строк (# Π² Π½Π°Ρ‡Π°Π»Π΅).

Как Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ шаблонам, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ SED Π½Π° Linux

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ строку с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ шаблоном с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ sed, просто Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

sed '/pattern/s/^#//' -i file

Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° раскоммСнтируСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΡƒΡŽ строку.

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ pattern ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом строки ΠΈ Ρ„Π°ΠΉΠ»Π° с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π°.

Если Ρ„Π°ΠΉΠ» содСрТит нСсколько строк, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, ΠΈ всС ΠΎΠ½ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… всС, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ запускаСтС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ sed глобально, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ g:

sed '/pattern/s/^#//g' -i file

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку с шаблоном This, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ;

sed '/This/s/^#//' -i /tmp/lines

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ set Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π½ΠΎΠ³ΠΎ запуска Π±Π΅Π· фактичСского примСнСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊ встроСнному Ρ„Π°ΠΉΠ»Ρƒ, опуститС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -i.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° раскоммСнтируСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ строку, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, которая Π² Π΄Π°Π½Π½ΠΎΠΌ случаС являСтся Π²Ρ‚ΠΎΡ€ΠΎΠΉ строкой, #This is line2.

cat /tmp/lines
This is line1
This is line2
This is line3
#line4
This is line5
This is line6
#My line7
This is line8
This is line9
This is line10
This is line11
Your is line12
This is line13
This is line14
#Their line15
This is line16
This is line17
#This is line18
This is line19
This is line20

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ строки Π² Ρ„Π°ΠΉΠ»Π΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, This, запуститС;

sed '/This/s/^#//g' -i /tmp/lines

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию исходного Ρ„Π°ΠΉΠ»Π° ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -i. <extension> вмСсто -i, Π³Π΄Π΅ <extension> ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ bak, original, old ΠΈΠ»ΠΈ Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ прСфиксом для добавлСния ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ .

sed '/This/s/^#//g' -i.bak /tmp/lines

Как Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ строки Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SED Π½Π° Linux

Как Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ строки Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SED Π½Π° Linux

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ sed для раскоммСнтирования ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° строки Π² Ρ„Π°ΠΉΠ»Π΅.

Π’ Ρ„Π°ΠΉΠ»Π΅ ΠΏΡ€ΠΈ использовании Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° vim Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° строк, Π½Π°ΠΆΠ°Π² ESC ΠΈ ввСдя: set number;

Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку Π½ΠΎΠΌΠ΅Ρ€ 4 Π² Ρ„Π°ΠΉΠ»Π΅, Π½Π°Π΄ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ sed ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

sed '4s/^#//' /tmp/lines
This is line1
This is line2
This is line3
line4
This is line5
This is line6
#My line7
...
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ измСнСния Π² Ρ„Π°ΠΉΠ»Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ -i, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅.
This is line1
	This is line2
This is line3
    line4
This is line5
This is line6
#My line7

ΠžΡ‚ΡΡ‚ΡƒΠΏ сохраняСтся.

И это Π·Π½Π°ΠΌΠ΅Π½ΡƒΠ΅Ρ‚ Ρ„ΠΈΠ½Π°Π»Ρƒ нашСго руководства ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки Π² Ρ„Π°ΠΉΠ»Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SED Π½Π° Linux.

Если Ρƒ вас Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ.

 

You may also like

Leave a Comment