Как расположить строки данных

Мне нужна помощь. У меня есть такой файл:

-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) Не могли бы вы мне помочь?

баш-оболочка

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

-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

Не могли бы вы также проголосовать? Спасибо

Allan 08.04.2019 09:55
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
65
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

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

Объяснение :

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

Вы можете упростить свою команду до: rev filename.txt | sort | rev | sed 's/^\(.\)$/\n\1/g'

Allan 05.04.2019 09:41

На самом деле вы должны изменить свою команду на: $ rev filename.txt | sort | rev | sed 's/^\([^1]\)$/\n\1/g', потому что она генерирует одну пустую строку в начале файла, в любом случае +1!

Allan 05.04.2019 09:44

Прошу прощения за мой неясный вопрос. Я стремлюсь переставлять строки, а не сортировать данные. Я попытался отредактировать свой вопрос. Не могли бы вы мне помочь? Я очень ценю вашу помощь! С наилучшими пожеланиями!

Binh Thien 05.04.2019 09:56

@BinhThien Я думаю, вам следует задать другой вопрос и вернуться к оригиналу для этого. Поскольку это замечательное решение уже точно включает в себя ваши предыдущие потребности.

Barbaros Özhan 05.04.2019 10:02

@BarbarosÖzhan: ваш вопрос полностью отличается от того, что вы изначально задали... во всяком случае, я ответил на него.

Allan 05.04.2019 10:26
Ответ принят как подходящий

I have no idea to arrange such data lines by bash shell by grouping line numbers: (1,5,9,13,17), (2,6,10,14,18), (3,7,11,15,19), (4,8,12,16,20) Could you please help me?

Если вы действительно хотите перегруппируйте эти строки таким образом, вы можете просто использовать следующую команду:

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 добавит пустую строку.

Другие вопросы по теме