我需要帮助。我有一个像这样的文件:
-1.03 a b c
2.04 c b d
3.05 d b c
4.07 a n m
11.09 z y z
-12.52 o m n
13.04 u v t
14.05 a b j
21.06 j b c
22.01 n m h
23.05 i k m
-24.56 i o e
31.02 u a f
32.03 k l m
33.04 w d c
34.07 e i k
41.09 j o l
42.01 k p u
-43.06 o v m
44.55 h j l
我不知道如何通过对bash shell的行号进行分组来排列这些数据行:(1、5、9、13、17),(2、6、10、14、18),(3、7、11 ,15,19),(4,8,12,16,20)您能帮我吗?
打击壳
我需要安排行并将结果导出到另一个文件,如下所示:
-1.03 a b c
11.09 z y z
21.06 j b c
31.02 u a f
41.09 j o l
2.04 c b d
-12.52 o m n
22.01 n m h
32.03 k l m
42.01 k p u
3.05 d b c
13.04 u v t
23.05 i k m
33.04 w d c
-43.06 o v m
4.07 a n m
14.05 a b j
-24.56 i o e
34.07 e i k
44.55 h j l
答案 0 :(得分:4)
您可以使用以下内容:
rev filename.txt | sort | rev | sed 's/^\(.\)$/\n\1/g'
说明:
答案 1 :(得分:0)
我不知道如何通过bash shell来对这些数据行进行分组 行号:
(1,5,9,13,17)
,(2,6,10,14,18)
,(3,7,11,15,19)
,(4,8,12,16,20)
您能帮我吗?
如果您确实要以这种方式重新组合这些行,则可以使用以下命令:
for i in `seq 4`; do sed -n "$i~4p" file.txt; echo; done
-1.03 a b c
11.09 z y z
21.06 j b c
31.02 u a f
41.09 j o l
2.04 c b d
-12.52 o m n
22.01 n m h
32.03 k l m
42.01 k p u
3.05 d b c
13.04 u v t
23.05 i k m
33.04 w d c
-43.06 o v m
4.07 a n m
14.05 a b j
-24.56 i o e
34.07 e i k
44.55 h j l
在i
上从1
循环到4
;运行sed
命令从行$i + i+4, i+8,...
打印,然后echo
将添加一个空行。