Замените весь пробел разрывом строки / метка абзаца для создания списка слов

Я пробую к списку vocab за Имитацию текста, которую мы переводим в классе. Я хочу заменить каждый пробел или символ табуляции с меткой абзаца так, чтобы каждое слово появилось на своей собственной строке. Кто-либо может дать мне команду sed и объяснить, чем случается так, что я делаю? Я все еще пытаюсь понять sed.

62
задан 17 June 2013 в 07:09

4 ответа

Все примеры, упомянутые выше для sed, повреждаются на одной платформе или другом. Ни один из них не работает с версией sed, поставленного на Mac.

Однако regex Perl работает то же над любой машиной с установленным Perl:

perl -pe 's/\s+/\n/g' file.txt

, Если Вы хотите сохранить вывод:

perl -pe 's/\s+/\n/g' file.txt > newfile.txt

, Если Вы хотите только уникальные случаи слов:

perl -pe 's/\s+/\n/g' file.txt | sort -u > newfile.txt
9
ответ дан 31 October 2019 в 13:21
  1. Опция 2

    tr ' ' '\n' < testfile
    
опции 1

echo $(cat testfile)

6
ответ дан 31 October 2019 в 13:21

Вы могли использовать POSIX [[:blank:]] для соответствия горизонтальному пробельному символу.

sed 's/[[:blank:]]\+/\n/g' file

или можно использовать [[:space:]] вместо [[:blank:]] также.

Пример:

$ echo 'this  is a sentence' | sed 's/[[:blank:]]\+/\n/g'
this
is
a
sentence
4
ответ дан 31 October 2019 в 13:21

Можно также сделать это с xargs:

cat old | xargs -n1 > new

или

xargs -n1 < old > new
2
ответ дан 31 October 2019 в 13:21

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

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