每天一个linux命令(62):sed命令

sed命令行格式为
sed [常用选项] ‘常用命令’ 输入文本

• 常用选项:
-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都
会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动
作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑;
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的
sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶直接修改读取的档案内容,而不是由萤幕输出。

• 常用命令:
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)

c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行)

p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法
!例如 1,20s/xiaoming/xiaowang/g 就是啦!

Sed 检索文件

Sed –n ’10 p’ data.csv 输出第十行文件内容Sed –n ‘99990,100000 p’ data.csv 输出99990到100000文件内容Sed –n ‘99990, $ p ’ data.csv 输出99990到文件末尾内容Sed –n ‘/xiaoming0/,/xiaoming10/ p’ data.csv 输出包含xiaoming0到
xiaoming10之间内容
• Sed –n ‘/^xiaoming p/’ data.csv ^表示文件开头
• sed ‘/xiaoming/!p’ data.csv 显示不含有xiaoming的行
• sed -n ‘/[^ xiaoming]/p’ data.csv 效果同上Sed ‘/^$/p’ data.csv 匹配文件空行
• /^.*$/  整行

Sed删除文件内容

• sed '10 d' aa.txt
• sed '10,$ d' aa.txt
• sed '10~20 d' aa.txt
• sed '/123/ d' aa.txt
• sed '/123/,$ d' aa.txt

Sed 替换文件

• [root@forest sh]# more data.csv100012  小明0  xiaoming0  1234567890  11111111111111110  杭州  0  0100013  小明1  xiaoming1  1234567891  11111111111111111  杭州  1  1100014  小明2  xiaoming2  1234567892  11111111111111112  杭州  2  2100015  小明3  xiaoming3  1234567893  11111111111111113  杭州  3  3100016  小明4  xiaoming4  1234567894  11111111111111114  杭州  4  4100017  小明5  xiaoming5  1234567895  11111111111111115  杭州  5  5100018  小明6  xiaoming6  1234567896  11111111111111116  杭州  6  6100019  小明7  xiaoming7  1234567897  11111111111111117  杭州  7  7100020  小明8  xiaoming8  1234567898  11111111111111118  杭州  8  8100021  小明9  xiaoming9  1234567899  11111111111111119  杭州  9  9100022  小明10  xiaoming10  12345678910  111111111111111110  杭州  10  10
• [root@forest sh]# sed -i's/\t/,/g' data.csv
• [root@forest sh]# more data.csv100012,小明0,xiaoming0,1234567890,11111111111111110,杭州,0,0100013,小明1,xiaoming1,1234567891,11111111111111111,杭州,1,1100014,小明2,xiaoming2,1234567892,11111111111111112,杭州,2,2100015,小明3,xiaoming3,1234567893,11111111111111113,杭州,3,3100016,小明4,xiaoming4,1234567894,11111111111111114,杭州,4,4100017,小明5,xiaoming5,1234567895,11111111111111115,杭州,5,5100018,小明6,xiaoming6,1234567896,11111111111111116,杭州,6,6100019,小明7,xiaoming7,1234567897,11111111111111117,杭州,7,7100020,小明8,xiaoming8,1234567898,11111111111111118,杭州,8,8100021,小明9,xiaoming9,1234567899,11111111111111119,杭州,9,9100022,小明10,xiaoming10,12345678910,111111111111111110,杭州,10,10

Sed 文件添加内容

• sed '$a insert one line data' data.csv200003,小明99991,xiaoming99991,12345678999991,111111111111111199991,杭州,255,65535200004,小明99992,xiaoming99992,12345678999992,111111111111111199992,杭州,255,65535200005,小明99993,xiaoming99993,12345678999993,111111111111111199993,杭州,255,65535200006,小明99994,xiaoming99994,12345678999994,111111111111111199994,杭州,255,65535200007,小明99995,xiaoming99995,12345678999995,111111111111111199995,杭州,255,65535200008,小明99996,xiaoming99996,12345678999996,111111111111111199996,杭州,255,65535200009,小明99997,xiaoming99997,12345678999997,111111111111111199997,杭州,255,65535200010,小明99998,xiaoming99998,12345678999998,111111111111111199998,杭州,255,65535200011,小明99999,xiaoming99999,12345678999999,111111111111111199999,杭州,255,65535
• insert one line data
• 相当于 echo “insert one line data” >> data.csv 文件尾部追加内容

你可能感兴趣的:(Linux学习)