Я намагаюся видалити рядки, що містять більше 3-х слів у Блокноті ++. Я не можу знайти в Google слово вираз "слово", і не можу використовувати "кількість символів", як це не було б можливо.
gc in.txt | ? { ($_ -split "\s").Count -le 3 } | sc out.txt
Я намагаюся видалити рядки, що містять більше 3-х слів у Блокноті ++. Я не можу знайти в Google слово вираз "слово", і не можу використовувати "кількість символів", як це не було б можливо.
gc in.txt | ? { ($_ -split "\s").Count -le 3 } | sc out.txt
Відповіді:
У Блокноті ++ ви можете виконати пошук-заміну наступним регулярним виразом: Знайдіть що: ^\S+[ \t]+\S+[ \t]+\S+.*(\r\n)?
Замініть на: (нічого)
Зніміть прапорець "Обернути навколо", пошукайте в режимі пошуку "Регулярне вираження".
Пояснили:
Ведучий ^означає початок рядка.
\Sвідповідає символам, що не містять пробілів; тому \S+відповідає послідовним символам без пробілу, тобто слова.
[ \t]+ відповідає пробілам і вкладкам (им) як межі слів.
.*означає будь-які символи; перед нами вже три слова, тому ми просто включаємо все, поки не досягнемо нового рядка.
\r\n означає новий рядок для файлів Windows.
\S+повторюється 3 рази, кожен з них розділений за [ \t]+шаблоном. Якщо ви хочете зробити його більш гнучким, ви можете внести зміни в цю частину (\S+[ \t]+){2}\S+. {2}означає попередній зразок, укладений в дужки, повторюваний два рази, додаючи остаточне \S+внесення в три.
Чи можу я сприяти цьому? Як сказав Кеннет, \ r \ n означає новий рядок для файлів Windows. Якщо ваш файл кодується, наприклад, як UTF8 (можливо, найпоширеніший сьогодні), розрив рядка буде тільки \ n (не \ r \ n). Звідси код Кеннета повинен стати:
^\S+[ \t]+\S+[ \t]+\S+.*(\n)