【发布时间】:2015-04-01 16:17:36
【问题描述】:
我在创建单行或简单脚本以使用 sed 编辑一些固定长度文件时遇到了一些麻烦。
假设我的文件有这种格式的行:
IPITTYTHEFOOBUTIDONOTPITTYTHEBAR
IPITTYTH BARBUTIDONOTPITTYTH3FOO
如果整行都被视为一个字符串,我可以说我想用正则表达式匹配从位置 10 开始且长度为 3 的子字符串。如果它与正则表达式匹配,我想在该行末尾添加一些其他字符串。
假设匹配的正则表达式是B.R,并且要附加在行尾的字符串是NOT,我希望我的文件变成:
IPITTYTHEFOOBUTIDONOTPITTYTHEBAR
IPITTYTH BARBUTIDONOTPITTYTHEFOONOT
文件中的行比本示例中的要大。
到目前为止,我有这个:
sed -i '/B.R/ s/$/NOT/' file.name
问题在于这忽略了正则表达式匹配的位置,使得示例的第一行也匹配:
IPITTYTHEFOOBUTIDONOTPITTYTHEBAR
IPITTYTH BARBUTIDONOTPITTYTH3FOO
我也愿意使用 awk。
提前致谢。
【问题讨论】: