使用Perl或sed替换固定位置字符字段

时间:2013-10-14 19:47:04

标签: regex perl ksh

我需要替换文件每行中的特定字符范围。

我试过这个

    perl -i -pe 'r77,79c/XXX/g' file

我正在尝试使用Perl将第77个字符更改为XXX,但上面的代码无效。

4 个答案:

答案 0 :(得分:2)

你想用XXX替换位置[77-79]的字符吗?

 perl -i -piorig_* -e "substr($_,76,3)=XXX" file

将创建一个名为orig_file的备份文件,以防止可能的数据损失..

答案 1 :(得分:1)

perl -i -pe 's/.{76}\K.../XXX/' file

答案 2 :(得分:1)

您写道:

Actually i want to search a pattern in a file and whatever lines matching that pattern needs to be replaced to 50th & 51st character to XX

使用sed:

sed -r '/pattern/s/^(.{49})..(.*)$/\1XX\2/' file

答案 3 :(得分:0)

sed "/pattern/ s/^\(.\{49\}\)../\1XX/" YourFile

我们不接触结束