用空格替换行的某个位置的字符

时间:2013-03-11 13:17:39

标签: perl sed awk formatting

我需要能够在 Unix / Solaris 上替换文件中每一行 58-71 空格的字符位置

提取示例:

LOCAX0791LOCPIKAX0791LOC   AX0791LOC095200130008PIKAX079100000000000000WL1G011             000092000000000000

LOCAX0811LOCPIKAX0811LOC   AX0811LOC094700450006PIKAX0811000000000000006C1G011             000294000000000000

LOCAX0831LOCPIKAX0831LOC   AX0831LOC094000180006PIKAX083100000000000000OJ1G011             000171000000000000

5 个答案:

答案 0 :(得分:2)

或者:

sed -r  's/^(.{57})(.{14})/\1              /' bar.txt

为可怕的14个太空弦道歉。

答案 1 :(得分:1)

Simple Perl one liner

perl -pne 'substr($_, 58, 13) = (" "x13);' inputfile.txt > outputfile.txt

答案 2 :(得分:0)

试试这个:

awk 'BEGIN{FS=OFS=""} {for(i=57;i<=71;i++)$i=" "}1' file

第一行输出:

LOCAX0791LOCPIKAX0791LOC   AX0791LOC095200130008PIKAX079               WL1G011

答案 3 :(得分:0)

在Perl中尝试:

use strict;
use warnings;

while(<STDIN>) {

   my @input = split(//, $_);
   for(my $i=58; $i<71; $i++) {
      $input[$i] = " ";
   }
   $_ = join(//, @input);
   print $_;
}

答案 4 :(得分:0)

如果您在Solaris盒子上有傻瓜,可以尝试:

gawk 'BEGIN{FIELDWIDTHS = "57 14 1000"} gsub(/./," ",$2)' OFS= file