Мне нужна помощь. У меня есть такой файл:
-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
Вы можете использовать следующее:
rev filename.txt | sort | rev | sed 's/^\(.\)$/\n\1/g'
Объяснение :
Вы можете упростить свою команду до: rev filename.txt | sort | rev | sed 's/^\(.\)$/\n\1/g'
На самом деле вы должны изменить свою команду на: $ rev filename.txt | sort | rev | sed 's/^\([^1]\)$/\n\1/g'
, потому что она генерирует одну пустую строку в начале файла, в любом случае +1!
Прошу прощения за мой неясный вопрос. Я стремлюсь переставлять строки, а не сортировать данные. Я попытался отредактировать свой вопрос. Не могли бы вы мне помочь? Я очень ценю вашу помощь! С наилучшими пожеланиями!
@BinhThien Я думаю, вам следует задать другой вопрос и вернуться к оригиналу для этого. Поскольку это замечательное решение уже точно включает в себя ваши предыдущие потребности.
@BarbarosÖzhan: ваш вопрос полностью отличается от того, что вы изначально задали... во всяком случае, я ответил на него.
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
добавит пустую строку.
Не могли бы вы также проголосовать? Спасибо