0

Unix / Solarisでは、ファイル内のすべての行で、文字位置58〜71空白に置き換えることができる必要があります。

抽出例:

LOCAX0791LOCPIKAX0791LOC   AX0791LOC095200130008PIKAX079100000000000000WL1G011             000092000000000000

LOCAX0811LOCPIKAX0811LOC   AX0811LOC094700450006PIKAX0811000000000000006C1G011             000294000000000000

LOCAX0831LOCPIKAX0831LOC   AX0831LOC094000180006PIKAX083100000000000000OJ1G011             000171000000000000
4

5 に答える 5

2

または:

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

恐ろしい14スペースストリングについてお詫び申し上げます。

于 2013-03-11T13:27:09.483 に答える
1

シンプルなPerlワンライナー

perl -pne 'substr($_, 58, 13) = (" "x13);' inputfile.txt > outputfile.txt
于 2013-03-11T13:31:28.207 に答える
0

これを試して:

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

最初の行の出力:

LOCAX0791LOCPIKAX0791LOC   AX0791LOC095200130008PIKAX079               WL1G011
于 2013-03-11T13:22:46.830 に答える
0

Perlでこれを試してください:

use strict;
use warnings;

while(<STDIN>) {

   my @input = split(//, $_);
   for(my $i=58; $i<71; $i++) {
      $input[$i] = " ";
   }
   $_ = join(//, @input);
   print $_;
}
于 2013-03-11T13:24:50.337 に答える
0

Solarisボックスにgawkがある場合は、次のことを試すことができます。

gawk 'BEGIN{FIELDWIDTHS = "57 14 1000"} gsub(/./," ",$2)' OFS= file
于 2013-03-11T14:38:08.013 に答える