如何在下面的字符串中替换两个字符,第5位和第6位?
2xxx99xx
我想通过获取文件的记录数来替换第5位和第6位(即99)。
$cat file | wc -l
3
输出必须是:
2xxx03xx
答案 0 :(得分:3)
foo=2xxx99xx
printf "%s%02d%s" ${foo:0:4} $(wc -l < file) ${foo:6}
答案 1 :(得分:0)
使用sed:
echo "2xxx99xx" | sed -r "s/(.{4})..(.*)/\1$(printf "%02d" `wc -l < ff`)\2/g"
前4个字符组成组1,其余字符串除了第5和第6个字符组成组2.然后我们放回第1组,格式化数据,然后第2组。
如果sed版本不支持扩展正则表达式,请使用以下命令:
echo "2xxx99xx" | sed "s/\(.\{4\}\)..\(.*\)/\1$(printf "%02d" `wc -l < ff`)\2/g"