分类: LINUX
2010-03-24 09:26:30
- 錨點(anchor) 用以標識 RE 於句子中的位置所在. 常見有: ^: 表示句首. 如 ^abc 表示以 abc 開首的句子. $: 表示句尾. 如 abc$ 表示以 abc 結尾的句子. \<: 表示詞首. 如 \ - 修飾字符(modifier) 獨立表示時本身不具意義, 專門用以修改前一個 char. set 的出現次數. 常見有: *: 表示前一個 char. set 的出現次數為 0 或多次. 如 ab*c 表示 a 與 c 之間可有 0 或多個 b 存在. ?: 表示前一個 char. set 的出現次數為 0 或 1 次. 如 ab?c 表示 a 與 c 之間可有 0 或 1 個 b 存在. +: 表示前一個 char. set 的出現次數為 1 或多次. 如 ab+c 表示 a 與 c 之間可有 1 或多個 b 存在. {n}: 表示前一個 char. set 的出現次數必須為 n 次. 如 ab{3,}c 表示 a 與 c 之間必須有 3 個 b 存在.{n,}: 表示前一個 char. set 的出現次數至少為 n 次. 如 ab{3,}c 表示 a 與 c 之間至少有 3 個 b 存在. {n,m}: 表示前一個 char. set 的出現次數為 n 到 m 次. 如 ab{3,5}c 表示 a 與 c 之間有 3 到 5 個 b 存在. |
sed [-n] [-e] 'command' file(s) sed [-n] -f scriptfile file(s)
zhyfly@zhyfly:~$ sed 'some-sed-commands' input-file>output-file
[address [,address]]w filename
zhyfly@zhyfly:~/bash$ cat test.txt The honeysuckle band played all night long for only $90. It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -e '1,2w test.bak' test.txt The honeysuckle band played all night long for only $90. It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ cat test.bak The honeysuckle band played all night long for only $90. It was an evening of splendid music and company.
address r filename
zhyfly@zhyfly:~/bash$ cat test.txt The honeysuckle band played all night long for only $90. It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance.
zhyfly@zhyfly:~/bash$ sed -e '1p' test.txt The honeysuckle band played all night long for only $90. The honeysuckle band played all night long for only $90. It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -n -e '1p' test.txt The honeysuckle band played all night long for only $90.
zhyfly@zhyfly:~/bash$ sed -n -e '2p' test.txt It was an evening of splendid music and company.
zhyfly@zhyfly:~/bash$ sed -n -e '2,3p' test.txt It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00.
zhyfly@zhyfly:~/bash$ sed -n -e '/company/p' test.txt It was an evening of splendid music and company.
zhyfly@zhyfly:~/bash$ sed -n -e '2,/23:00/p' test.txt It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00.
zhyfly@zhyfly:~/bash$ sed -n -e '2,3!p' test.txt The honeysuckle band played all night long for only $90. The local nurse Miss P.Neave was in attendance.
zhyfly@zhyfly:~/bash$ sed -e '=' test.txt 1 The honeysuckle band played all night long for only $90. 2 It was an evening of splendid music and company. 3 Too bad the disco floor fell through at 23:00. 4 The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -n -e '=' test.txt 1 2 3 4 zhyfly@zhyfly:~/bash$ sed -n -e '/music/p' test.txt It was an evening of splendid music and company. zhyfly@zhyfly:~/bash$ sed -n -e '/music/=' test.txt 2 zhyfly@zhyfly:~/bash$ sed -n -e '/music/p' -e '/music/=' test.txt It was an evening of splendid music and company. 2 zhyfly@zhyfly:~/bash$ sed -e '=;p' test.txt 1 The honeysuckle band played all night long for only $90. The honeysuckle band played all night long for only $90. 2 It was an evening of splendid music and company. It was an evening of splendid music and company. 3 Too bad the disco floor fell through at 23:00. Too bad the disco floor fell through at 23:00. 4 The local nurse Miss P.Neave was in attendance. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -n -e '=;p' test.txt 1 The honeysuckle band played all night long for only $90. 2 It was an evening of splendid music and company. 3 Too bad the disco floor fell through at 23:00. 4 The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -n -e '=' -e 'p' test.txt 1 The honeysuckle band played all night long for only $90. 2 It was an evening of splendid music and company. 3 Too bad the disco floor fell through at 23:00. 4 The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$
zhyfly@zhyfly:~/bash$ sed -e 'a\this line will be added to the end of each line!oooooooooo' test.txt The honeysuckle band played all night long for only $90. this line will be added to the end of each line!oooooooooo It was an evening of splendid music and company. this line will be added to the end of each line!oooooooooo Too bad the disco floor fell through at 23:00. this line will be added to the end of each line!oooooooooo The local nurse Miss P.Neave was in attendance. this line will be added to the end of each line!oooooooooo zhyfly@zhyfly:~/bash$ sed -e '/music/a\this line will be added to the end of the matching line!oooooooooo' test.txt The honeysuckle band played all night long for only $90. It was an evening of splendid music and company. this line will be added to the end of the matching line!oooooooooo Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance.
zhyfly@zhyfly:~/bash$ sed -e 'i\this line will be inserted to the begin of each line!oooooooooo' test.txt this line will be inserted to the begin of each line!oooooooooo The honeysuckle band played all night long for only $90. this line will be inserted to the begin of each line!oooooooooo It was an evening of splendid music and company. this line will be inserted to the begin of each line!oooooooooo Too bad the disco floor fell through at 23:00. this line will be inserted to the begin of each line!oooooooooo The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -e '/music/i\this line will be inserted to the begin of the matching line!oooooooooo' test.txt The honeysuckle band played all night long for only $90. this line will be inserted to the begin of the matching line!oooooooooo It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance.
zhyfly@zhyfly:~/bash$ sed -e 'c\this line will be modified to the each line!oooooooooo' test.txt this line will be modified to the each line!oooooooooo this line will be modified to the each line!oooooooooo this line will be modified to the each line!oooooooooo this line will be modified to the each line!oooooooooo zhyfly@zhyfly:~/bash$ sed -e '/music/c\this line will be modified to the matching line!oooooooooo' test.txt The honeysuckle band played all night long for only $90. this line will be modified to the matching line!oooooooooo Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance.
zhyfly@zhyfly:~/bash$ cat test.txt The honeysuckle band played all night long for only $90. It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -e '/music/d' test.txt The honeysuckle band played all night long for only $90. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance.
zhyfly@zhyfly:~/bash$ cat test.txt The honeysuckle band played all night long for only $90. It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -e 's/h/ooooo/' test.txt Toooooe honeysuckle band played all night long for only $90. It was an evening of splendid music and company. Too bad toooooe disco floor fell through at 23:00. Toooooe local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -e 's/h/ooooo/g' test.txt Toooooe ooooooneysuckle band played all nigooooot long for only $90. It was an evening of splendid music and company. Too bad toooooe disco floor fell tooooorougooooo at 23:00. Toooooe local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -e '1,2s/h/ooooo/' test.txt Toooooe honeysuckle band played all night long for only $90. It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -e '1,2s/h/ooooo/g' test.txt Toooooe ooooooneysuckle band played all nigooooot long for only $90. It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -e '/\$/s/h/ooooo/g' test.txt Toooooe ooooooneysuckle band played all nigooooot long for only $90. It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -e '/^It/,/23:00/s/l/ooooo/g' test.txt The honeysuckle band played all night long for only $90. It was an evening of spoooooendid music and company. Too bad the disco fooooooor feoooooooooo through at 23:00. The local nurse Miss P.Neave was in attendance.
zhyfly@zhyfly:~/bash$ cat test.txt The honeysuckle band played all night long for only $90. It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -e 's/$90/&230/g' test.txt The honeysuckle band played all night long for only $90230. It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -e 's/90/120,&/g' test.txt The honeysuckle band played all night long for only $120,90. It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance.
zhyfly@zhyfly:~/bash$ echo $PWD /home/zhyfly/bash zhyfly@zhyfly:~/bash$ echo $PWD|sed -e 's:/:@:g' @home@zhyfly@bash
zhyfly@zhyfly:~/bash$ cat test This is what I meant. zhyfly@zhyfly:~/bash$ sed -e 's/<.*>//g' test This meant.
zhyfly@zhyfly:~/bash$ sed -e 's/<[^>]*>//g' test This is what I meant.
zhyfly@zhyfly:~/bash$ echo "hello\hh\haha" hello\hh\haha zhyfly@zhyfly:~/bash$ echo "hello\hh\haha"|sed -e 's/\\/'/g' > > bash: unexpected EOF while looking for matching `'' bash: syntax error: unexpected end of file zhyfly@zhyfly:~/bash$ echo "hello\hh\haha"|sed -e 's/\\/\'/g' > > bash: unexpected EOF while looking for matching `'' bash: syntax error: unexpected end of file
zhyfly@zhyfly:~/bash$ echo "hello\hh\haha"|sed -e 's/\\/'"'"'/g' hello'hh'haha zhyfly@zhyfly:~/bash$
[:alnum:] 字母数字 [a-z A-Z 0-9] [:alpha:] 字母 [a-z A-Z] [:blank:] 空格或制表键 [:cntrl:] 任何控制字符 [:digit:] 数字 [0-9] [:graph:] 任何可视字符(无空格) [:lower:] 小写 [a-z] [:print:] 非控制字符 [:punct:] 标点字符 [:space:] 空格 [:upper:] 大写 [A-Z] [:xdigit:] 十六进制数字 [0-9 a-f A-F]
/^\([0-9]*\)\([A-Z]*\)\([0-9]*\)/\1 \2 \3/
zhyfly@zhyfly:~/bash$ cat file1.txt 1C2 1C3 1C31 1C32 1C4 2C3 2C4 1D1 1D10 1D12 1D2 1D3 1D31 1RC2 1RC20 1RC21 1RC3 1RC31 1WR1 1WR2 1WR20 1WR21 1WR23
zhyfly@zhyfly:~/bash$ sed -e 's/^\([0-9]*\)\([A-Z]*\)\([0-9]*\)/\1 \2 \3 /g' file1.txt 1 C 2 1 C 3 1 C 31 1 C 32 1 C 4 2 C 3 2 C 4 1 D 1 1 D 10 1 D 12 1 D 2 1 D 3 1 D 31 1 RC 2 1 RC 20 1 RC 21 1 RC 3 1 RC 31 1 WR 1 1 WR 2 1 WR 20 1 WR 21 1 WR 23
zhyfly@zhyfly:~/bash$ sed -e 's/^\([0-9]*\)\([A-Z]*\)\([0-9]*\)/\1 \2 \3 /g' file1.txt|sort +1 -2 +2n +0 -1 1 C 2 1 C 3 2 C 3 1 C 4 2 C 4 1 C 31 1 C 32 1 D 1 1 D 2 1 D 3 1 D 10 1 D 12 1 D 31 1 RC 2 1 RC 3 1 RC 20 1 RC 21 1 RC 31 1 WR 1 1 WR 2 1 WR 20 1 WR 21 1 WR 23
/-\([0-9]\)-/-0\1-/ #月 /-\([0-9]\) /-0\1 / #日
zhyfly@zhyfly:~/bash$ cat file.txt 123456 345678 2005-05-06 123456 123456 234567 2003-5-6 234567 345555 987644 2003-4-23 543333 555555 999999 2004-11-5 999999 zhyfly@zhyfly:~/bash$ sed -e 's/-\([0-9]\)-/-0\1-/g' -e 's/-\([0-9]\) /-0\1 /g' file.txt 123456 345678 2005-05-06 123456 123456 234567 2003-05-06 234567 345555 987644 2003-04-23 543333 555555 999999 2004-11-05 999999 zhyfly@zhyfly:~/bash$ sed -e 's/-\([0-9]\)-/-0\1-/g;s/-\([0-9]\) /-0\1 /g' file.txt 123456 345678 2005-05-06 123456 123456 234567 2003-05-06 234567 345555 987644 2003-04-23 543333 555555 999999 2004-11-05 999999 zhyfly@zhyfly:~/bash$ sed -e :a -e 's/-\([0-9]\)\([- ]\)/-0\1\2/;ta' file.txt 123456 345678 2005-05-06 123456 123456 234567 2003-05-06 234567 345555 987644 2003-04-23 543333 555555 999999 2004-11-05 999999
zhyfly@zhyfly:~/bash$ sed -e '2,3s/a/ooooo/g' -e '2,3s/d/ddddd/g' test.txt The honeysuckle band played all night long for only $90. It wooooos ooooon evening of splendddddiddddd music ooooonddddd compooooony. Too boooooddddd the dddddisco floor fell through ooooot 23:00. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -e '2,3s/a/ooooo/g;2,3s/d/ddddd/g' test.txt The honeysuckle band played all night long for only $90. It wooooos ooooon evening of splendddddiddddd music ooooonddddd compooooony. Too boooooddddd the dddddisco floor fell through ooooot 23:00. The local nurse Miss P.Neave was in attendance.
zhyfly@zhyfly:~/bash$ cat sub.sed #!/bin/sed -f 2,3s/a/ooooo/g 2,3s/d/ddddd/g zhyfly@zhyfly:~/bash$ sudo chmod +x sub.sed zhyfly@zhyfly:~/bash$ cat test.txt The honeysuckle band played all night long for only $90. It was an evening of splendid music and company. Too bad the disco floor fell through at 23:00. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ ./sub.sed test.txt The honeysuckle band played all night long for only $90. It wooooos ooooon evening of splendddddiddddd music ooooonddddd compooooony. Too boooooddddd the dddddisco floor fell through ooooot 23:00. The local nurse Miss P.Neave was in attendance. zhyfly@zhyfly:~/bash$ sed -f sub.sed test.txt The honeysuckle band played all night long for only $90. It wooooos ooooon evening of splendddddiddddd music ooooonddddd compooooony. Too boooooddddd the dddddisco floor fell through ooooot 23:00. The local nurse Miss P.Neave was in attendance.