Как я могу делить выходные данные с помощью разделителя?

Я хотел бы изменить:

e·ver·y·bo·dy

to:

e·ver·y·bo·dy
e·ver·y·bo·
e·ver·y·
e·ver·
e·

Цикл for будет очень предпочтительным.

1
задан 20 March 2015 в 12:37

3 ответа

Вы можете сделать это с помощью более короткой команды awk, как показано ниже (длинная до маленькой):

$ awk -F'·' '{while (NF){ print $0;NF--;ORS="·\n"}}' OFS='·' file
e·ver·y·bo·dy
e·ver·y·bo·
e·ver·y·
e·ver·
e·

И от до малого следующим образом:

$ awk -F'·' '{i=1; while(i<NF){ print tmp=tmp$((i++))"·"} print $0}' file
e·
e·ver·
e·ver·y·
e·ver·y·bo·
e·ver·y·bo·dy
2
ответ дан 23 May 2018 в 22:14
  • 1
    Получил это KasiyA, спасибо за ваш метод тоже, он отлично работает. Мне тоже нравится ваш метод! – TuxForLife 22 March 2015 в 00:24

Если это должен быть цикл for:

IFS=·
for l in $(echo "e·ver·y·bo·dy"); do x="$x$l·"; echo "$x"; done | tac

Сначала мы должны установить внутренний разделитель файлов на ·. Затем цикл for пробегает каждый мир и печатает его, но в неправильном порядке. Вот почему tac в конце меняет порядок.

Дает мне выход:

e·ver·y·bo·dy·
e·ver·y·bo·
e·ver·y·
e·ver·
e·
1
ответ дан 23 May 2018 в 22:14
  • 1
    Привет, хаос, спасибо за второй вариант. Ваш скрипт почти то, что мне нужно, однако я не ищу последнюю точку на «e · ver · y · bo · dy · " Я думаю, что мне понадобятся команды tac или rev, чтобы отменить порядок, поэтому добрый вызов этому – TuxForLife 20 March 2015 в 11:05
  • 2
    Привет, хаос, спасибо за помощь, мне жаль, что я не могу дать вам голосование за попытку помочь, но у меня нет репутации. Ура! – TuxForLife 20 March 2015 в 11:14

Вот решение python:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
input_str = 'e·ver·y·bo·dy'
input_list = input_str.split('·')
print input_str
i = len(input_list)
while i > 1:
    print '·'.join(input_list[:i-1]) + '·'
    i -= 1

Здесь мы сначала split вводим строку, используя · в качестве разделителя для создания списка, а затем используемого списка и join, чтобы получить желаемый результат.

1
ответ дан 23 May 2018 в 22:14

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

Похожие вопросы: