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.csv
• 100012 小明0 xiaoming0 1234567890 11111111111111110 杭州 0 0
• 100013 小明1 xiaoming1 1234567891 11111111111111111 杭州 1 1
• 100014 小明2 xiaoming2 1234567892 11111111111111112 杭州 2 2
• 100015 小明3 xiaoming3 1234567893 11111111111111113 杭州 3 3
• 100016 小明4 xiaoming4 1234567894 11111111111111114 杭州 4 4
• 100017 小明5 xiaoming5 1234567895 11111111111111115 杭州 5 5
• 100018 小明6 xiaoming6 1234567896 11111111111111116 杭州 6 6
• 100019 小明7 xiaoming7 1234567897 11111111111111117 杭州 7 7
• 100020 小明8 xiaoming8 1234567898 11111111111111118 杭州 8 8
• 100021 小明9 xiaoming9 1234567899 11111111111111119 杭州 9 9
• 100022 小明10 xiaoming10 12345678910 111111111111111110 杭州 10 10
• [root@forest sh]# sed -i's/\t/,/g' data.csv
• [root@forest sh]# more data.csv
• 100012,小明0,xiaoming0,1234567890,11111111111111110,杭州,0,0
• 100013,小明1,xiaoming1,1234567891,11111111111111111,杭州,1,1
• 100014,小明2,xiaoming2,1234567892,11111111111111112,杭州,2,2
• 100015,小明3,xiaoming3,1234567893,11111111111111113,杭州,3,3
• 100016,小明4,xiaoming4,1234567894,11111111111111114,杭州,4,4
• 100017,小明5,xiaoming5,1234567895,11111111111111115,杭州,5,5
• 100018,小明6,xiaoming6,1234567896,11111111111111116,杭州,6,6
• 100019,小明7,xiaoming7,1234567897,11111111111111117,杭州,7,7
• 100020,小明8,xiaoming8,1234567898,11111111111111118,杭州,8,8
• 100021,小明9,xiaoming9,1234567899,11111111111111119,杭州,9,9
• 100022,小明10,xiaoming10,12345678910,111111111111111110,杭州,10,10
Sed 文件添加内容
• sed '$a insert one line data' data.csv
• 200003,小明99991,xiaoming99991,12345678999991,111111111111111199991,杭州,255,65535
• 200004,小明99992,xiaoming99992,12345678999992,111111111111111199992,杭州,255,65535
• 200005,小明99993,xiaoming99993,12345678999993,111111111111111199993,杭州,255,65535
• 200006,小明99994,xiaoming99994,12345678999994,111111111111111199994,杭州,255,65535
• 200007,小明99995,xiaoming99995,12345678999995,111111111111111199995,杭州,255,65535
• 200008,小明99996,xiaoming99996,12345678999996,111111111111111199996,杭州,255,65535
• 200009,小明99997,xiaoming99997,12345678999997,111111111111111199997,杭州,255,65535
• 200010,小明99998,xiaoming99998,12345678999998,111111111111111199998,杭州,255,65535
• 200011,小明99999,xiaoming99999,12345678999999,111111111111111199999,杭州,255,65535
• insert one line data
• 相当于 echo “insert one line data” >> data.csv 文件尾部追加内容