我怎样才能拆分固定维度的几列中的单个列,例如我有一个这样的列:
1 2 3 4 5 6 7 8
和大小p。 前4,我想获得
1 5 2 6 3 7 4 8
或大小p。 前2,我想获得
1 3 5 7 2 4 6 8
正确的方法不打印到与命令的shell
你怎么能问当前的selectbash?
Home / End键在tmux中不起作用
如何在ImageMagick中使用带标题的stdin
使用&参数在body中测量bash脚本的运行时间
查找文件中出现的单词的所有实例
Shell脚本:在shebang中使用grep和tr
将参数从调用bash脚本传递给Rscript
sed在Linux和FreeBSD上
使用awk:
awk ' BEGIN { # Numbers of rows to print n=4; } { # Add to array with key = 0,1,2,3,.. l[(NR-1)%n] = l[(NR-1)%n] " " $0 }; END { # print the array for (i = 0; i < length(l); i++) { print l[i]; } } ' file
好的,这有点长,不可靠,但下面的工作:
td=$( mktemp -d ); split -l <rows> <file> ${td}/x ; paste $( ls -1t ${td}/x* ) ; rm -rf ${td}; unset td
其中<cols>是你想要的行数, file是你的输入文件。 说明:
td=$( mktemp -d )
创建一个临时目录,以便我们可以将临时文件放入其中。 将其存储在td – 有可能你的shell已经有一个td变量了,但是如果你是这个子shell的话,你的范围应该是OK的。
split -l <rows> <file> f ${td}/x
将原始文件拆分成许多较小的文件,每个<rows>长。 这些将被放入您的临时目录,所有文件将以x为前缀
paste $( ls -1t ${td}/x* )
写出这些文件,以便连续列中的行
rm -rf ${td}
unset td
清洁环境。
假设你知道列中的行数(这里是8):
n=8 # to get output with 4 rows: seq $n | pr -ts" " -$((n/4))
1 5 2 6 3 7 4 8
# to get output with 2 rows: seq $n | pr -ts" " -$((n/2))
1 3 5 7 2 4 6 8
如果你知道所需的输出宽度,你可以使用column 。
# display in columns for an 80 column display cat file | column -c 80
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。