大部分整理自鳥哥私房菜
使用方法
sed [ -nefr] [n1,n2] acction
-n: 是安靜模式氨肌,只有經(jīng)過sed處理的行才會顯示熊尉,其他不現(xiàn)實
-e: 表示直接在命令行上執(zhí)行哗伯。是默認選項不用填寫。
-f: 將Sed的操作寫在一個文件里面睹欲,用的時候-f filename 就可以按照內(nèi)容進行Sed操作
-r:表示支持擴展正則表達式矾屯,默認支持基礎正則表達式
-i: 直接修改讀取的文件內(nèi)容滩届,而不是由文件輸出
n1,n2 代表的是行數(shù)
- Sed的action (動作)支持如下參數(shù)
a: 表示添加诊沪,后接字符串,添加到當前行的下一行
c:表示替換砌函,后接的字符串斩披,用它來替換N1到N2之間的行
d:刪除行
i:表示插入,后街字符串讹俊,添加到當然行的上一行
p:表示打印和-n一起使用
s: 表示搜索垦沉,還可以替換1,20s/old/new/g表示把1到20行的old換成new
正則替換
sed 's/要被替換的字符串/新的字符串/g'
使用示例
- 將old 替換為 new
echo "old new djkalfja" | sed '1,20s/old/new/g'
echo "old new djkalfja" | sed 's/old/new/g'
- \ 與 /
- 測試echo
echo "\\\\///"
\\///
- 將\替換為/
echo "\\\\///" | sed 's#\\#/#g'
/////
- 將/替換為\
echo "\\\\///" | sed 's#/#\\#g'
\\\\\
- 查看密碼文件
nl /etc/passwd | head -5
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
5 sync:x:4:65534:sync:/bin:/bin/sync
- 增加功能
nl /etc/passwd | head -5 | sed '2,4a hello\nworld'
1 root:x:0:0:root:/root:/bin/bash
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
hello
world
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
hello
world
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
hello
world
5 sync:x:4:65534:sync:/bin:/bin/sync
- 刪除功能
nl /etc/passwd | head -5 | sed '2,4d'
1 root:x:0:0:root:/root:/bin/bash
5 sync:x:4:65534:sync:/bin:/bin/sync
```
- 按行修改
nl /etc/passwd | head -5 | sed '2,4c No 2-4 number'
1 root:x:0:0:root:/root:/bin/bash
No 2-4 number
5 sync:x:4:65534:sync:/bin:/bin/sync
- 打印功能
nl /etc/passwd | head -5 | sed -n '2,4p'
2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
-
eth0網(wǎng)卡 ip 提取
- 查看eth0信息
ifconfig eth0
- 信息如下
eth0 Link encap:Ethernet HWaddr b8:ae:ed:db:dd:2f
inet addr:192.168.1.82 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::baae:edff:fedb:dd2f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1817953 errors:0 dropped:23976 overruns:0 frame:0
TX packets:162649 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:461052740 (461.0 MB) TX bytes:22537583 (22.5 MB)
- 獲取192.168.1.82這個ip
ifconfig eth0 | grep 'inet addr:' | sed 's/^.*addr://g' | sed 's/ Bcast.*$//g'
- 綜合運用
- 刪除 manpath.config這個文件中沒有注釋的MAN的行,并且顯示
cat /etc/manpath.config | grep "MAN" | sed 's/^#.*$//g' | sed '/^$/d' | head -5
MANDATORY_MANPATH /usr/man
MANDATORY_MANPATH /usr/share/man
MANDATORY_MANPATH /usr/local/share/man
MANPATH_MAP /bin /usr/share/man
MANPATH_MAP /usr/bin /usr/share/man
- 修改文件內(nèi)容
- 將結(jié)尾的.換成!
sed -i 's/\.$/\!/g' test.txt
- 在文檔最后一行增加Hello world!
sed -i 'a Hello world!' test.txt
vim中sed使用
- 將rep 10替換為rep 100劣像, 一個一個替換
:1,$s/rep 10/rep 100/gc
- 將\替換為/乡话,一個一個替換
:1,$s#\\#/#gc