Как организовать линии данных - PullRequest
1 голос
/ 05 апреля 2019

Мне нужна помощь. У меня есть файл, подобный этому:

-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, группируя номера строк: (1,5,9,13,17), (2,6,10,14,18), (3,7,11 , 15,19), (4,8,12,16,20) Не могли бы вы мне помочь?

оболочка bash

Мне нужно упорядочить строки и экспортировать результаты в другой файл, например так:

-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

Ответы [ 2 ]

4 голосов
/ 05 апреля 2019

Вы можете использовать следующее:

rev filename.txt | sort | rev | sed 's/^\(.\)$/\n\1/g'

Объяснение:

  • Сортировать справа налево
  • вставлять новую строку перед каждым однозначным числом.
0 голосов
/ 05 апреля 2019

Я не имею представления упорядочивать такие строки данных по оболочке bash, группируя номера строк: (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

loop on i из 1 в4;выполните команду sed для печати из строки $i + i+4, i+8,..., затем echo добавит пустую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...