在bash中替换字符串中的字符

在bash中替换字符串中的字符,bash,awk,sed,Bash,Awk,Sed,如何替换以下字符串中的第5位和第6位两个字符 2xxx99xx 我想通过获取文件的记录计数来替换第5位和第6位(99) $cat file | wc -l 3 输出必须是: 2xxx03xx foo=2xxx99xx printf“%s%02d%s”${foo:0:4}$(wc-l

如何替换以下字符串中的第5位和第6位两个字符

 2xxx99xx
我想通过获取文件的记录计数来替换第5位和第6位(99)

 $cat file | wc -l
 3
输出必须是:

 2xxx03xx
foo=2xxx99xx
printf“%s%02d%s”${foo:0:4}$(wc-l
foo=2xxx99xx
printf“%s%02d%s”${foo:0:4}$(wc-l
foo=2xxx99xx
printf“%s%02d%s”${foo:0:4}$(wc-l
foo=2xxx99xx
printf“%s%02d%s”${foo:0:4}$(wc-l
使用sed:

echo "2xxx99xx" | sed -r "s/(.{4})..(.*)/\1$(printf "%02d" `wc -l < ff`)\2/g"
echo“2xxx99xx”| sed-r“s/(.{4})…(.*)/\1$(printf“%02d”`wc-l
前4个字符组成第1组,除第5和第6个字符外的其他字符串组成第2组。然后我们放回第一组,格式化数据,然后是第二组

如果sed版本不支持扩展正则表达式,请使用以下命令:

echo "2xxx99xx" | sed "s/\(.\{4\}\)..\(.*\)/\1$(printf "%02d" `wc -l < ff`)\2/g"
echo“2xxx99xx”sed“s/\(.\{4\}\)..\(.*)/\1$(printf“%02d”`wc-l
使用sed:

echo "2xxx99xx" | sed -r "s/(.{4})..(.*)/\1$(printf "%02d" `wc -l < ff`)\2/g"
echo“2xxx99xx”| sed-r“s/(.{4})…(.*)/\1$(printf“%02d”`wc-l
前4个字符组成第1组,除第5和第6个字符外的其他字符串组成第2组。然后我们放回第一组,格式化数据,然后是第二组

如果sed版本不支持扩展正则表达式,请使用以下命令:

echo "2xxx99xx" | sed "s/\(.\{4\}\)..\(.*\)/\1$(printf "%02d" `wc -l < ff`)\2/g"
echo“2xxx99xx”sed“s/\(.\{4\}\)..\(.*)/\1$(printf“%02d”`wc-l
使用sed:

echo "2xxx99xx" | sed -r "s/(.{4})..(.*)/\1$(printf "%02d" `wc -l < ff`)\2/g"
echo“2xxx99xx”| sed-r“s/(.{4})…(.*)/\1$(printf“%02d”`wc-l
前4个字符组成第1组,除第5和第6个字符外的其他字符串组成第2组。然后我们放回第一组,格式化数据,然后是第二组

如果sed版本不支持扩展正则表达式,请使用以下命令:

echo "2xxx99xx" | sed "s/\(.\{4\}\)..\(.*\)/\1$(printf "%02d" `wc -l < ff`)\2/g"
echo“2xxx99xx”sed“s/\(.\{4\}\)..\(.*)/\1$(printf“%02d”`wc-l
使用sed:

echo "2xxx99xx" | sed -r "s/(.{4})..(.*)/\1$(printf "%02d" `wc -l < ff`)\2/g"
echo“2xxx99xx”| sed-r“s/(.{4})…(.*)/\1$(printf“%02d”`wc-l
前4个字符组成第1组,除第5和第6个字符外的其他字符串组成第2组。然后我们放回第一组,格式化数据,然后是第二组

如果sed版本不支持扩展正则表达式,请使用以下命令:

echo "2xxx99xx" | sed "s/\(.\{4\}\)..\(.*\)/\1$(printf "%02d" `wc -l < ff`)\2/g"
echo“2xxx99xx”sed“s/\(.\{4\}\)..\(.*)/\1$(printf“%02d”`wc-l
可以使用、或或许多其他程序完成。你可能想先试试你自己,告诉我们你试了什么以及是怎么回事。
wc-l
cat-file\wc-l
@Joachim Pileborg,我试过这个记录\u count=
wc-l
FOO=2xxx03xx awk-v rec=“${record\u count}”{data=substr($0,5,6);data=rec;print}但FOO没有任何变化。对不起,我是新手。字符串
2xxx99xx
存储在哪里?在变量中?在文件中?从其他命令传来的?您想修改原始文件或变量,还是只想在标准输出中看到更新的字符串?请澄清。可能与、或或许多其他程序一起完成。你可能想先试试你自己,告诉我们你试了什么以及是怎么回事。
wc-l
cat-file\wc-l
@Joachim Pileborg,我试过这个记录\u count=
wc-l
FOO=2xxx03xx awk-v rec=“${record\u count}”{data=substr($0,5,6);data=rec;print}但FOO没有任何变化。对不起,我是新手。字符串
2xxx99xx
存储在哪里?在变量中?在文件中?从其他命令传来的?您想修改原始文件或变量,还是只想在标准输出中看到更新的字符串?请澄清。可能与、或或许多其他程序一起完成。你可能想先试试你自己,告诉我们你试了什么以及是怎么回事。
wc-l
cat-file\wc-l
@Joachim Pileborg,我试过这个记录\u count=
wc-l
FOO=2xxx03xx awk-v rec=“${record\u count}”{data=substr($0,5,6);data=rec;print}但FOO没有任何变化。对不起,我是新手。字符串
2xxx99xx
存储在哪里?在变量中?在文件中?从其他命令传来的?您想修改原始文件或变量,还是只想在标准输出中看到更新的字符串?请澄清。可能与、或或许多其他程序一起完成。你可能想先试试你自己,告诉我们你试了什么以及是怎么回事。
wc-l
cat-file\wc-l
@Joachim Pileborg,我试过这个记录\u count=
wc-l
FOO=2xxx03xx awk-v rec=“${record\u count}”{data=substr($0,5,6);data=rec;print}但FOO没有任何变化。对不起,我是新手。字符串
2xxx99xx
存储在哪里?在变量中?在文件中?从其他命令传来的?您想修改原始文件或变量,还是只想在标准输出中看到更新的字符串?请澄清。我收到此错误${trailer:0:4}:指定的替换对于此命令无效。请注意,trail=$(tail-n1$文件)
tail-n1$文件
为您打印什么?这是打印输出:20019923对我来说非常适合。也许如果你发布的整个脚本都不起作用……否则,你没有向我们展示的部分似乎有问题。我遇到了以下错误${trailer:0:4}:指定的替换对该命令无效。请注意,trail=$(tail-n1$文件)
tail-n1$文件
为您打印什么?这是打印输出:20019923对我来说非常适合。也许如果你发布的整个脚本都不起作用……否则,你没有向我们展示的部分似乎有问题。我遇到了以下错误${trailer:0:4}:指定的替换对该命令无效。请注意拖车=$(tail-n1$文件)
tail-n1$文件
为您打印什么?这是