邢栋博客

邢栋博客,Action博客,记录工作和生活中的点点滴滴

linux中sed命令的几个简单事例


删除文件中1-10行的数据
sed -e '1,10d' ./myfile.txt 

删除文件中以#开头的行,即删除注释
sed -e '/^#/d' ./myfile.txt 

将每行第一次出现的xingdong替换成action
sed -e 's/xingdong/action/' ./myfile.txt

将每行所有的xingdong替换成action
sed -e 's/xingdong/actio/g' ./myfile.txt


把结果存储到文件
sed -e 's/xingdong/actio/g' ./myfile.txt > ./newfile.txt 
或者

sed -i 's/xingdong/actio/g' ./myfile.txt 


使用sed--格式

命令行格式
sed [options] 'command' file(s)
options  -e;-n
command 行定位(正则) + sed命令(操作)

命令行格式举例
1. sed -n '/root/p'
2. sed -e '10,20d' -e 's/false/true/g'

基本操作命令
1. -p 打印相关的行 需要和 -n 配合  sed -n 'p' /etc/passwd
2. -a(新增行) /i(插入行)   新增是在某行之后,插入是在之前
   -c(替代行)
   -d(删除行)
   
nl /etc/passwd | sed '1,5i===' //在1-5行之前插入=== 
nl /etc/passwd | sed '5i==='  //在5行之前插入===
sed '/^$/d' dt.php  //去除空行

3. -s(行首个字符替换) : 分隔符/,# 等
   -g(全局替换) 
sed -e 's/xingdong/actio/g' ./myfile.txt
sed -e 's/xingdong/action/' ./myfile.txt
   
   
高级操作命令
(1)
-{}:多个sed命令,用;分开  
nl passwd|sed '{20,30d;s/false/true/}'

(2)
-n 读取下一个输入行(用下一个命令处理)
nl /etc/passwd |sed -n '{n;p}'  //打印偶数行 同 nl /etc/passwd |sed -n '2~2p'
nl /etc/passwd |sed -n '{p;n}' //打印奇数行 同 nl /etc/passwd |sed -n '1~2p'

(3)
- &:替换固定字符串
cat  /etc/passwd|sed 's/^[a-z]\+/&  /'

案例1:大小写的转换
元字符 \u\l\U\L :转换为大写/小写字符
cat  /etc/passwd|sed 's/^[a-z]\+/\U&/'  //把用户名转换成大写
cat  /etc/passwd|sed 's/^[a-z]\+/\u&/'  //把用户名首字母转换成大写
ls *.php| sed 's/^\w\+/\U&/'  //把所有php文件名转换成大写
cat /etc/passwd| sed 's/\([a-z]\+\):x:\([0-9]\+\):\([0-9]\+\).*$/\1:\2:\3/'   //取 用户名:uid:gid

(4)
-\( \):替换某种(部分)字符串(\1,\2)

ifconfig eth0 | sed -n '/inet/p'| sed 's/inet \([0-9.]\+\).*$/\1/' // 取ip

(5)
-r:复制指定文件插入到匹配行
-w:复制匹配行拷贝到指定文件里

sed '1r 123.txt' abc.txt   //复制123.txt的文件内容到 abc.txt第一行后面,文件内容没改变
sed '1w abc.txt' 123.txt   //复制123.txt内容的第一行到abc.txt中(清空然后写入)
sed 'w abc.txt' 123.txt    //复制123.txt内容到abc.txt中(清空然后写入) 

(6)
q:退出sed

nl /etc/passwd | sed '/daemon/q'  //找到daemon所在的行然后退出
nl /etc/passwd | sed '10q'  //读取到第10行退出


sed -f scriptfile file(s)


Linux 中查看文件第n行内容的命令
Linux 中查看文件第n行内容的命令

方法1:
head -m filename | tail -1                    //查看filename文件的第m行(tail -1 是数字1)
例子:head -100 data.txt | tail -1          //查看data.txt文件的第100行

方法2:
 nl filename | sed -n 'mp'                     //查看filename文件的第m行
例子:nl data.txt | sed -n '100p'             //查看data.txt文件的第100行

方法3:
sed -n 'mp' filename                            //查看filename文件的第m行
例子:sed -n '100p 'data.txt                   //查看data.txt文件的第100行

方法4:
awk 'NR==m' filename                        //查看filename文件的第m行
例子:awk 'NR==100 'data.txt               //查看data.txt文件的第100行

优惠券
广告位-淘宝
最新微语