免费注册 查看新帖 |

Chinaunix

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

[文本处理] 【已解决】< $USER 如何理解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-10 20:56 |只看该作者 |倒序浏览
本帖最后由 tonyibm 于 2016-05-10 22:07 编辑

USER是之前定义好的变量,并且之前也有重定向数据到里面,

awk -F: '{print $1 ":" $5}' > $USER

后面又通过sed来重新整理了数据,但是这里用了输入重定向,

sed 's=/.*==' < $USER | SORT

这里的输入重定向是什么意思,是反过来将sed的结果覆盖变量USER原来的值么?

论坛徽章:
0
2 [报告]
发表于 2016-05-10 22:16 |只看该作者
本帖最后由 lll1985911 于 2016-05-10 22:17 编辑

awk -F: '{print $1 ":" $5}' > $USER:我想这句的意思是把awk的处理结果输出(重定向)到以$USER的值为文件名的文件中。但是awk前面没什么东西也没有的话这行命令应该阻塞在那里,等待用户输入东西。

sed 's=/.*==' < $USER | SORT:这句话的意思是将以$USER的值为文件名的文件的内容输入给sed命令让其处理,然后把sed的处理结果在输出给sort命令排序(这里SORT是大写我假设是作者手误)。另外说一下sed的正则's=/.*==',sed中在用s命令替换的时候是可以把/替换成别的符号的,只要保持一致就行了。但是'/.*'抱歉我实在是看不懂啥意思了,我猜想作者的本意是想删除.字符吧?
假设:
1,如果删除第一个.字符用:'s/\.//'
2,如果删除所有.字符用:'s/\.//g'
3,如果删除第n个.字符用:'s/\.//n'(PS:注意n要换成对应的数字)
4,如果删除整行用:'s/.*//'(不过一般这么做没什么意义)

可能我理解有偏差,抱歉!

论坛徽章:
0
3 [报告]
发表于 2016-05-10 23:06 |只看该作者
谢谢,
sed 's=/.*==', 这个的意思是找到第一个斜杠,一直到行尾,将其替换成空,
比如这个字符串, hello world/hi/wd
那结果就是:hello world
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP