免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3915 | 回复: 11
打印 上一主题 下一主题

菜鸟awk sed总结 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-18 16:56 |只看该作者 |倒序浏览
作为一个linux新手,在这里问了大家一些awk sed的问题了,现在本人总结了一下所问的问题,拿出来给大家分享,有什么不对的请指正,以后还需要大家的大力支持啊。谢谢大家
本来弄得doc文档,好像不能上传啊,由于内容不多,我就直接贴出来了


1.        12345678abcdef 变成 12 34 56 78 ab cd ef
echo 12345678abcdef | sed “s/../& /g”或echo 12345678abcdef | sed -r“s/(..)/\1 /g”
2.        12345678变成12:34 56:78
echo 12345678 | sed “s/(..)()../\1:\2 /g”
3.        文件a.txt内容如下,我想筛选出login_version的值(22222222)
login_company:1111111111
login_version:222222222
awk  -F : ‘$1~/login_version/{print $2}’ a.txt
或者sed –n ‘s/login_version:\(.*\)/\1/p’a.txt
4.文件a.txt如下
<body>
  
hello
.......
</body>

我想把hello替换成 hi, hello不是固定的 <body>是固定的 ,也就是说我想把<body>行下的第一个非空行替换成hi
  sed '/body/{:a;n;s/.\+/hi/;t;ba};' a.txt
或者sed  '/<body>/{:la;n;/^$/bla;s/.*/hi/}'
或者awk '/<body>/{p=1}!NF{p++}p==2&&NF{$0="hi";p=0}1'
5.        文本内容同4,只是现在想替换<body>下的第一行,不管是否为空
sed sed '/\<body\>/{n;s/^.*$/hi/}'  a.txt
或者awk '/<body>/{print;getline;print"hhhhhh";next}1'  a.txt
6  将文件内容倒过来
   sed -i '1!G;h;$!d' a.txt
7  cat a.txt
<item>
    12345(abc)
....

我想把<item>行下的内容替换成12345(mmm),有个问题就是12345(abc) 可能是12345不包含(abc)部分
         sed -r "/<item>/{n;s/(\(.*\))?$/(mmm)/};"  a.txt

评分

参与人数 2可用积分 +13 收起 理由
expert1 + 10 鼓励一下
zooyo + 3 加油

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2011-07-18 17:05 |只看该作者
支持~~

论坛徽章:
0
3 [报告]
发表于 2011-07-18 17:28 |只看该作者
回复 2# where27


    多谢2楼啊,其中有好几个都有您的回复啊。

论坛徽章:
0
4 [报告]
发表于 2011-07-18 17:29 |只看该作者
回复 1# lzx4456


2.        12345678变成12:34 56:78
echo 12345678 | sed “s/(..)()../\1:\2 /g” 更正为echo 12345678 | sed “s/(..)(..)/\1:\2 /g”
不好意思了啊

论坛徽章:
0
5 [报告]
发表于 2011-07-18 20:03 |只看该作者
echo 12345678 | sed -r “s/(..)(..)/\1:\2 /g”  加上-r参数

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
6 [报告]
发表于 2011-07-18 21:12 |只看该作者
支持!

论坛徽章:
0
7 [报告]
发表于 2011-07-18 23:51 |只看该作者
不错

论坛徽章:
0
8 [报告]
发表于 2011-07-19 00:18 |只看该作者
学习

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
9 [报告]
发表于 2011-07-19 04:36 |只看该作者
回复 1# lzx4456


    支持,
对第一点作个小补充,也可以使用下面的方法,所有的空格都在字符串之间。
sed 's/../ &/2g'

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
10 [报告]
发表于 2011-07-19 06:24 |只看该作者
回复  lzx4456


    支持,
对第一点作个小补充,也可以使用下面的方法,所有的空格都在字符串之间。 ...
yinyuemi 发表于 2011-07-19 04:36



    这是gsed的扩展吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP