Как я могу использовать sed или grep с этим - PullRequest
2 голосов
/ 05 июня 2019

У меня есть текстовый файл с 20000 строками, некоторые строки содержат 1 символ или 2 или 3 из этого диапазона:

[\x{0990}-\x{099D}]

Я хочу добавить новую строку \ n после последнего символа в строке, например: До:

Alpha beta @#$ gama

После:

Alpha beta @#$
gama

Ответы [ 3 ]

0 голосов
/ 05 июня 2019

Вы имеете в виду что-то вроде этого?

sed 's/[\x0990-\x099D]\{1,3\} /&\n/' file.txt

Объяснение

s                              # use substitution
/                              # separator
[\x0990-\x099D]\{1,3\}         # 1 to 3 symbols
/                              # separator
&\n                            # replace with symbols\n
/                              # separator
0 голосов
/ 05 июня 2019

Символы ঐ঑঒ওঔকখগঘঙচছজঝ, вы можете явно использовать их в sed:

sed -E 's/(ঐ|঑|঒|ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3}[[:space:]]*/&\n/g'

Полная команда ввода:

sed -i -E 's/(ঐ|঑|঒|ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3}[[:space:]]*/&\n/g' file; # GNU sed
sed -E -i '' 's/(ঐ|঑|঒|ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3}[[:space:]]*/&\n/g' file; # Free BSD sed

См. онлайн sed demo .

Здесь

  • (ঐ|঑|঒|ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3} - это выражение в скобках, соответствующее требуемым символам 1, 2 или 3 раза
  • [[:space:]]* -0+ пробелов.

Шаблон замены &\n вставляет обратно все совпадение, а затем добавляет новую строку.

Совет : обрезать пробелы после этихсимволы, используйте

sed -E 's/((ঐ|঑|঒|ও|ঔ|ক|খ|গ|ঘ|ঙ|চ|ছ|জ|ঝ){1,3})[[:space:]]*/\1\n/g' 
0 голосов
/ 05 июня 2019

Вам нужно найти строку:

([!@#$%^&*()_+=~`-]{1,3})([^!@#$%^&*()_+=~`-]*)$

и заменить на:

\1\n\2

Тест здесь .

Список символов можно настроить в соответствии с вашими потребностями. Я добавил большинство символов на клавиатуре, на цифровых клавишах.

...