Macos Unix命令(Mac OS):剪切和移动行
请告诉我可以使用哪个unix命令执行以下操作: 我想转换这些行Macos Unix命令(Mac OS):剪切和移动行,macos,perl,bash,shell,unix,Macos,Perl,Bash,Shell,Unix,请告诉我可以使用哪个unix命令执行以下操作: 我想转换这些行 1 a i 2 b ii 3 c iii 4 d iv 5 e v 6 f vi 7 g vii 8 h viii 9 i xi …分为: 1 a i 4 d iv 7 g vii 2 b ii 5 e v 8 h viii 3 c iii 6 f
1 a i
2 b ii
3 c iii
4 d iv
5 e v
6 f vi
7 g vii
8 h viii
9 i xi
…分为:
1 a i 4 d iv 7 g vii
2 b ii 5 e v 8 h viii
3 c iii 6 f vi 9 i xi
rs
和perl-pne
只是转置它们,但正如您所看到的,我需要一个全新的安排。Perl代码将受到青睐,但我感谢任何帮助
干杯
marsch这里有一条单行线:
perl -ne 'chomp; push @a,$_ if $_; unless($. % 3) {push @f,[@a]; @a = undef; shift @a} END {for my $i (@f) { for (@$i) {print "$_ "} print "\n"}}' filename.txt
输出
1 a i 2 b ii 3 c iii
4 d iv 5 e v 6 f vi
7 g vii 8 h viii 9 i xi
我会使用
coreutils
中的split
和paste
。请尝试以下命令:
split -l3 infile
paste -d' ' xaa xab xac | column -t
输出:
1 a i 4 d iv 7 g vii
2 b ii 5 e v 8 h viii
3 c iii 6 f vi 9 i xi
我用红宝石
string = "1 a i
2 b ii
3 c iii
4 d iv
5 e v
6 f vi
7 g vii
8 h viii
9 i xi "
ary = string.split("\n")
length = ary.size / 3
new_ary = Array.new(3, "")
ary.each_with_index do |e, i|
position = i % 3
new_ary[position] += e
end
puts new_ary.join("\n")
希望对您有所帮助:)使用perl一行程序
perl -lne 'push @{$l[($.-1) % 3]}, $_; }{ print "@$_" for @l' data.txt | column -t
说明:
开关:
:启用行结束处理,指定行结束符-l
:为输入文件中的每一行创建-n
循环李>while(){..}
:告诉-e
在命令行上执行代码李>perl
push@{$l[($-1)%3]},$\代码>:按行号将每一行推入一个数组
:在处理结束时打印3元素数组}{print“@$\”for@l
:使列均匀| column-t