sed中的贪婪匹配 本文共有6063个字,关键词: 还是拿/etc/passwd练手,虽然我有点不厚道,但是这个文件是个绝好的靶子,罪过罪过,copy谨慎操作。 首先整一个目标文件 cd /tmp for i in `seq 1 3`; do cat /etc/passwd>>./1.txt; done 解释以下,seq作为一个数列 开始进入正题,贪婪匹配,先来上一个例子 sed -n -r ‘s/([^:]+)(:.*:)([^:]+$)/\3\2\1/’ 1.txt -n 仅输出sed处理的行 -r 使sed支持正则 () 小括号的作用是划分字段,第一个字段为开始到第一个冒号前,第二字段为第一个冒号后到最后一个冒号前,第三个字段为最后一个冒号后。 \3\2\1 数字代表第几字段,此处将1/3字段调换位置。 + 匹配前面一个字符一次或者多次,[^:]+此处为匹配非冒号字符一次或者多次 再举一个例子,本来想整个谐音字,但是想了想,还是要正规用词,毕竟我是个有理想有追求的人,哈哈哈 echo abc123abc 使输出为123abc 和123 echo “abc123abc” |sed -r‘s/([a-z]+)([0-9]+)([a-z]+$)/\2\3/’ 123abc echo “abc1223abc” |sed -r‘s/([^0-9]+)([0-9]+)([^0-9]+$)/\2\3/’ 123 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 随手笔记 2016-12-25 评论 1752 次浏览