sed擴展

sed擴展

  1. 打印某行到某行之間的內容

  2. sed轉換大小寫

  3. sed在某一行最後添加一個數字

  4. 刪除某行到最後一行

  5. 打印1到100行含某個字符串的行



練習題

假設一個文件test.txt裏面包含如下內容:

ert

fff

[abcfd]

123

324

444

[rty]

fgfgf


問,如何截取出如下部分內容?

[abcfd]

123

324

444

[rty]


示例如下:

# sed -n '/\[abcfd\]/,/\[rty\]/p' test.txt

[abcfd]

123

324

444

[rty]



sed 如何轉換大小寫字母

解釋:sed中,使用\u表示大寫,\l表示小寫


把每個單詞的第一個小寫字母變大寫:

操作命令:sed 's/\b[a-z]/\u&/g' filename


把所有小寫字母變大寫字母:

操作命令:sed 's/[a-z]/\u&/g' filename


大寫字母變小寫字母:

操作命令:sed 's/[A-Z]/\l&/g' filename

示例如下:

# cat test.txt

erT

ffF

**

[abcfd]

123

324

444

[rty]

**

Fgfgf

DDF


# sed 's/\b[a-z]/\u&/g' test.txt        

ErT

FfF

**

[Abcfd]

123

324

444

[Rty]

**

Fgfgf

DDF


# sed 's/[a-z]/\u&/g' test.txt

ERT

FFF

**

[ABCFD]

123

324

444

[RTY]

**

FGFGF

DDF


# sed 's/[A-Z]/\l&/g' test.txt

ert

fff

**

[abcfd]

123

324

444

[rty]

**

fgfgf

ddf



sed在文件中某一行最後添加一個數字

操作命令:sed 's/(^a.*)/\1 12/' test

示例如下:

# cat test2.txt

skdj

aslkd aslkdjf3e

skdjfsdfj

sdkfjk

fsdkfjksdjfkjsdf

sdfesdf

aslkdjfkasdjf asdlfkjaskdfj


# sed 's/\(^a.*\)/\1 12/' test2.txt

skdj

aslkd aslkdjf3e 12

skdjfsdfj

sdkfjk

fsdkfjksdjfkjsdf

sdfesdf

aslkdjfkasdjf asdlfkjaskdfj 12

# sed 's/\(^s.*\)/\1 12/' test2.txt

skdj 12

aslkd aslkdjf3e

skdjfsdfj 12

sdkfjk 12

fsdkfjksdjfkjsdf

sdfesdf 12

aslkdjfkasdjf asdlfkjaskdfj

# sed 's/\(^f.*\)/\1 12/' test2.txt

skdj

aslkd aslkdjf3e

skdjfsdfj

sdkfjk

fsdkfjksdjfkjsdf 12

sdfesdf

aslkdjfkasdjf asdlfkjaskdfj



sed刪除某關鍵字的下一行到最後一行

示例如下:

# cat test3.txt

a

b

c

d

e

f

# sed '/c/{p;:a;N;$!ba;d}' test3.txt

a

b

c



如何使用sed打印1到100行包含某個字符串的行

其實就是sed指定行範圍匹配,較少見。

示例如下:

# sed  -n '1,100{/use/p}'  test4.txt 

tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

user1:x:1001:1001::/home/user1:/bin/bash

user2:x:1003:1003::/home/user2:/bin/bash

user3:x:1004:1005::/home/user3:/bin/bash

user4:x:1006:1005::/home/aming111:/sbin/nologin

user5:x:1007:1007::/home/user5:/bin/bash

user6:x:1008:1010::/home/user6:/bin/bash


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章