sed和awk常用命令式例
2016-09-12 11:11
330 查看
sed 循环 一行一行的处理文件 行处理
sed -n '/abc/p' file 默认会打印模式空间的内容
行中匹配abc的打印出来 -r 支持扩展分割符
-n不让默认打印模式空间
sed root@10.0.0.1 sed 's/abc/def' file 远程登录后修改file里的内容
sed -n '5p' file 把第五行打印出来
sed -n '$p' file 把最后一行打印出来
sed -n '1,3p' file 把一到三行打印出来
sed -n '1,~3p' file 从第一行开始打印三行
sed -i '3i aaaaaaa' file 在第三行的前面加上aaaaaaa
sed -i '$a aaaaa' file 在最后行加入aaaaa
sed -i '/^tom/i aaaaaa' file 在以tom开头的行前一行加上aaaaaa
sed -i 's/abc/def/' file 改每一行的第一个abc成def
sed -i 's/abc/def/g' file 改每一行的所有abc成def
sed -i 's/abc/def/3' file 改每一行的第三个abc成def
sed -i '1,2s/abc/def/' file 改一到两行abc成def
s 换匹配的字段 c换匹配的行
sed -i '1,2s/^.*$/def/' file 改一到两行成def
sed -i '4c aaaaaaaaa' file 把第四行改为aaaaaaaa
sed -i '/^SELINUX/c selinux ' 把所有以SELINUX开头的行改为selinux
sed -i '4d' 把第四行删除
sed -i '/^tom/d' file 删除以tom开头的所有行
sed -i '/^$/d' file 删除空行
sed -i '/^\s$/d' file 删除开头为空行\s表示空格或tab
sed -i '/^abc/s/tom/jerry/' file 先找到以abc开头的行将这一行的tom改为jerry
sed -i '/^mike/s/^/#' file 将mike行注释
sed -n '1p; 3p' file 打印第一行和第三行
sed -i -e '1s/jerry/tom/; -e 3s/mike/xyz/' file 多条一起执行用-e
sed -i '/abc/,/^def/s/123/456/' file 将abc开头的行和def开头的行之间的行的123改为456
sed -n '1,/def/p' file 从第一行开始直到碰到def的行全部打印出来
#------------------------------------------------------------------------
awk 按行处理行里字段 循环命令
默认以空格作为分割符 默认打印整行$0 -F分割符 制定分割符
awk 'BEGIN{print "aaaa"}/tom/{print $2}END{print "bbbbbbb"}' file1先执行BEGIN里的语句 从文件中读取第一行是否匹配/tom如果有则执行没有就不执行直到读完后,再运行END的语句 可以选用BEGIN 匹配项 ENG。
awk '/^mike/{print $2}' file
awk 'NR==2{print $2}' file NR是行号 NF字段数
awk 'NR==2||NR==4{print $2}' file 只读两个固定的行号
awk '{print $0}' file $0 整个行
awk 'BENGIN{FS=":" OFS=" "}/bash$/{print $0}' file FS 指定了分割符:OFS 指定了输出的字段分割符
tr ":" "" 将冒号改为空格
awk 'BEGIN{i=10;echo$i}'
awk -v v1=$a -v v2=$b 'BEGIN{print v1+v2}' 将bash的值传给awk
awk -F: -v v1=$a '$0~v1'{print $0} ~ 匹配条件
awk 'BEGIN{i=0;}{i++}END{print i}' file
awk '/^root/{$3+=10;print $3}' file
awk '$1~"root"{print $1}' file
awk '$1==500{print $1}' file 第一个字段为500
awk '$NF~"bash"{print $1}' file 最后一个字段是否有bash
awk '$3>=500&&$3<=503{print $2}' file
awk -F: -v v1=$a '$1~^v1' file 打印出以变量a开头的行
awk -F: '{if($1~/^root/)print $1}' file 打印出第一个字段以root开头的行的第一个字段
awk 'system("useradd" $2)' file system()调用系统的命令
sed -n '/abc/p' file 默认会打印模式空间的内容
行中匹配abc的打印出来 -r 支持扩展分割符
-n不让默认打印模式空间
sed root@10.0.0.1 sed 's/abc/def' file 远程登录后修改file里的内容
sed -n '5p' file 把第五行打印出来
sed -n '$p' file 把最后一行打印出来
sed -n '1,3p' file 把一到三行打印出来
sed -n '1,~3p' file 从第一行开始打印三行
sed -i '3i aaaaaaa' file 在第三行的前面加上aaaaaaa
sed -i '$a aaaaa' file 在最后行加入aaaaa
sed -i '/^tom/i aaaaaa' file 在以tom开头的行前一行加上aaaaaa
sed -i 's/abc/def/' file 改每一行的第一个abc成def
sed -i 's/abc/def/g' file 改每一行的所有abc成def
sed -i 's/abc/def/3' file 改每一行的第三个abc成def
sed -i '1,2s/abc/def/' file 改一到两行abc成def
s 换匹配的字段 c换匹配的行
sed -i '1,2s/^.*$/def/' file 改一到两行成def
sed -i '4c aaaaaaaaa' file 把第四行改为aaaaaaaa
sed -i '/^SELINUX/c selinux ' 把所有以SELINUX开头的行改为selinux
sed -i '4d' 把第四行删除
sed -i '/^tom/d' file 删除以tom开头的所有行
sed -i '/^$/d' file 删除空行
sed -i '/^\s$/d' file 删除开头为空行\s表示空格或tab
sed -i '/^abc/s/tom/jerry/' file 先找到以abc开头的行将这一行的tom改为jerry
sed -i '/^mike/s/^/#' file 将mike行注释
sed -n '1p; 3p' file 打印第一行和第三行
sed -i -e '1s/jerry/tom/; -e 3s/mike/xyz/' file 多条一起执行用-e
sed -i '/abc/,/^def/s/123/456/' file 将abc开头的行和def开头的行之间的行的123改为456
sed -n '1,/def/p' file 从第一行开始直到碰到def的行全部打印出来
#------------------------------------------------------------------------
awk 按行处理行里字段 循环命令
默认以空格作为分割符 默认打印整行$0 -F分割符 制定分割符
awk 'BEGIN{print "aaaa"}/tom/{print $2}END{print "bbbbbbb"}' file1先执行BEGIN里的语句 从文件中读取第一行是否匹配/tom如果有则执行没有就不执行直到读完后,再运行END的语句 可以选用BEGIN 匹配项 ENG。
awk '/^mike/{print $2}' file
awk 'NR==2{print $2}' file NR是行号 NF字段数
awk 'NR==2||NR==4{print $2}' file 只读两个固定的行号
awk '{print $0}' file $0 整个行
awk 'BENGIN{FS=":" OFS=" "}/bash$/{print $0}' file FS 指定了分割符:OFS 指定了输出的字段分割符
tr ":" "" 将冒号改为空格
awk 'BEGIN{i=10;echo$i}'
awk -v v1=$a -v v2=$b 'BEGIN{print v1+v2}' 将bash的值传给awk
awk -F: -v v1=$a '$0~v1'{print $0} ~ 匹配条件
awk 'BEGIN{i=0;}{i++}END{print i}' file
awk '/^root/{$3+=10;print $3}' file
awk '$1~"root"{print $1}' file
awk '$1==500{print $1}' file 第一个字段为500
awk '$NF~"bash"{print $1}' file 最后一个字段是否有bash
awk '$3>=500&&$3<=503{print $2}' file
awk -F: -v v1=$a '$1~^v1' file 打印出以变量a开头的行
awk -F: '{if($1~/^root/)print $1}' file 打印出第一个字段以root开头的行的第一个字段
awk 'system("useradd" $2)' file system()调用系统的命令
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- awk 入门 —— 强大的文本分析工具
- Scientific Linux 5.5 图形安装教程