sed:reversing pattern substitution
I有以下.txt文件:ABC Cor234德克萨斯州奥克斯兰登顿7号76509-4321(682)543-7890我需要使用sed命令反向更改邮政编码的最后4位数字。例子输出:234橡树园7号;
解答动态
您可以首先通过查找该行特有的模式来简化命令。在下面的示例中,我们将假设分号对要解析的行是唯一的(至少在示例文本中是如此)sed:
#捕获该行的最后4位数字,并将其按与$sed'/;/s/\(.\)\(.\)\(.\)\(.\)$/\4\3\2\1/'ABC Cor 234 7 Oaks Lane Denton;TX 76509-1234(682)543-7890相反的顺序替换为另一个答案,但是使用Perl:
$perl-lp-e'/;/lt;=-)\d{4}/reverse$lt;fileABC Cor 234 7 Oaks LaneDenton;TX 76509-1234(682)543-7890 这将查找包含;字符的行,并反转该行中破折号后的四位数字。
使用Perl reverse函数反转数字。
另一种sed替代方法,也可以灵活地反转任意长度的数字数字:
sed-E':a 3s/-([0-9]+)([0-9])$/-\2-\1/;ta;:b 3s/-([0-9])-([0-9]+)$/-\1\2/;tb'- End
免责声明:
本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。