我需要能够在 Unix / Solaris 上替换文件中每一行 58-71 和空格的字符位置
提取示例:
LOCAX0791LOCPIKAX0791LOC AX0791LOC095200130008PIKAX079100000000000000WL1G011 000092000000000000
LOCAX0811LOCPIKAX0811LOC AX0811LOC094700450006PIKAX0811000000000000006C1G011 000294000000000000
LOCAX0831LOCPIKAX0831LOC AX0831LOC094000180006PIKAX083100000000000000OJ1G011 000171000000000000
答案 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