e****x 发帖数: 692 | 1 想把如下四个数据一行的文本,变成两个数据一行的文本,该用什么脚本perl?如何操
作最简单?
谢谢了!
输入
0.000000000E+00 0.000000000E+00 1.000000000E-08 0.000000000E+00
1.099999997E-08 1.799999952E+00 5.100000000E-07 1.799999952E+00
输出
0.000000000E+00 0.000000000E+00
1.000000000E-08 0.000000000E+00
1.099999997E-08 1.799999952E+00
5.100000000E-07 1.799999952E+00 |
n*******e 发帖数: 4894 | 2 @data = split /\s+/, $line;
say $out_fh "$data[0] $data[1]\n$data[2] $data[3]";
大概就是这样
【在 e****x 的大作中提到】 : 想把如下四个数据一行的文本,变成两个数据一行的文本,该用什么脚本perl?如何操 : 作最简单? : 谢谢了! : 输入 : 0.000000000E+00 0.000000000E+00 1.000000000E-08 0.000000000E+00 : 1.099999997E-08 1.799999952E+00 5.100000000E-07 1.799999952E+00 : 输出 : 0.000000000E+00 0.000000000E+00 : 1.000000000E-08 0.000000000E+00 : 1.099999997E-08 1.799999952E+00
|
e****x 发帖数: 692 | 3 想把如下四个数据一行的文本,变成两个数据一行的文本,该用什么脚本perl?如何操
作最简单?
谢谢了!
输入
0.000000000E+00 0.000000000E+00 1.000000000E-08 0.000000000E+00
1.099999997E-08 1.799999952E+00 5.100000000E-07 1.799999952E+00
输出
0.000000000E+00 0.000000000E+00
1.000000000E-08 0.000000000E+00
1.099999997E-08 1.799999952E+00
5.100000000E-07 1.799999952E+00 |
n*******e 发帖数: 4894 | 4 @data = split /\s+/, $line;
say $out_fh "$data[0] $data[1]\n$data[2] $data[3]";
大概就是这样
【在 e****x 的大作中提到】 : 想把如下四个数据一行的文本,变成两个数据一行的文本,该用什么脚本perl?如何操 : 作最简单? : 谢谢了! : 输入 : 0.000000000E+00 0.000000000E+00 1.000000000E-08 0.000000000E+00 : 1.099999997E-08 1.799999952E+00 5.100000000E-07 1.799999952E+00 : 输出 : 0.000000000E+00 0.000000000E+00 : 1.000000000E-08 0.000000000E+00 : 1.099999997E-08 1.799999952E+00
|
w*****e 发帖数: 721 | 5 perl:
#!/usr/bin/perl
$|=1;
my $column_size=2;
open FH,"input.txt";
while(){
chomp;
push @data,split /\s+/,$_;
}
close FH;
for (my $i=0; $i<=$#data; $i++){
if (($i > 0) && ($i % $column_size == 0)){
print "\n";
}elsif ($i != 0){
print " ";
}
print $data[$i];
}
print "\n"; |
e*******o 发帖数: 4654 | 6 perl -anE 'say "@F[0,1]\n@F[2,3]"'
如果是fixed length
perl -pE 'substr($_,$start, $length_of_space) = "\n"'
【在 n*******e 的大作中提到】 : @data = split /\s+/, $line; : say $out_fh "$data[0] $data[1]\n$data[2] $data[3]"; : 大概就是这样
|
w*****e 发帖数: 721 | 7 #!/usr/local/bin/python3
import re;
fh=open('input.txt','r');
all=[];
for line in fh:
line=line.rstrip('\n');
arr=re.split('\s+',line)
all.extend(arr);
col=2;
for i in range(len(all)):
if ((i > 0) and (i % col == 0)):
print("\n", end='');
elif (i != 0):
print(" ", end='');
print(all[i].rstrip('\n'),end=''); |
S*A 发帖数: 7142 | 8 #!/usr/bin/python
fout = open('output.txt', 'w')
for l in open('input.txt'):
column = l.split()
fout.write('%s %s\n%s %s\n'%tuple(column)) |
i*e 发帖数: 352 | 9 想了两个,不知道可行否
sed 's/s+/t/g; s/t/n/2' inputfile > outputfile
awk -F '[[:blank:]]+' '{OFS="t"; print $1,$2"n"$3,$4}' inputfile >
outputfile
【在 e****x 的大作中提到】 : 想把如下四个数据一行的文本,变成两个数据一行的文本,该用什么脚本perl?如何操 : 作最简单? : 谢谢了! : 输入 : 0.000000000E+00 0.000000000E+00 1.000000000E-08 0.000000000E+00 : 1.099999997E-08 1.799999952E+00 5.100000000E-07 1.799999952E+00 : 输出 : 0.000000000E+00 0.000000000E+00 : 1.000000000E-08 0.000000000E+00 : 1.099999997E-08 1.799999952E+00
|