мой файл ref.txt содержит слова "привет", "привет", "алоха", как показано ниже:

hi
hello
aloha

И у меня есть еще один файл abc.txt, который содержит много слов, включая вышеупомянутые 3 слова.

Теперь я разработал пакет powershell для поиска по мирам в файле abc.txt и извлечения строки, содержащей слова, в новый файл done.txt. я использую команду -match, чтобы найти слово.

Как использовать файл ref.txt, который содержит слова для нахождения, вместо объявления слов в кодировке? Это хорошо, если его в cmd.exe или PowerShell кодирования. Пожалуйста, просветите меня.

$source = "C:\temp\abc.txt"  
$destination = "C:\temp\done.txt"
$hits = select-string -Path $source -SimpleMatch "hi","hello","aloha"  
$filecontents = get-content $source
foreach($hit in $hits) { 
    $filecontents[$hit.linenumber-1]| out-file -append 
    $destination "" |out-file -append $destination    
 }

2 ответа2

0

Из того, что я понимаю в вашем вопросе, вы хотите использовать слова в ref.txt в качестве критериев поиска, так что если у вас есть файл abc.txt, содержащий эти слова, строки, содержащие слова, будут возвращены в готовом файле. текст. Это можно сделать просто в cmd.exe одним из нескольких способов.

findstr /g:ref.txt abc.txt > done.txt

Приведенное выше решение возвращает любую строку, содержащую любое из слов (даже если они находятся в предложении или в части другого слова, например hi и high), но не учитывает регистр.

/R - Use regex
/I - Case insensitive search
/B - Match at the beginning of the line only
/E - Match at the end of the line only

Поэтому, если вы хотите только сопоставить слова в файле и не сопоставить слово в предложении, вы можете сделать findstr /BE /g:ref.txt abc.txt > done.txt

0

Вы можете использовать команду powershell get-content

Вы получите строку, которую вы можете разделить на \n чтобы получить каждую строку отдельно.

PS C:\> get-content c:\ref.txt
hi
hello
aloha

Разбейте его и сохраните в массив. Затем выполните действие по вашему выбору для каждого элемента, используя

foreach ($element in $array) 
{ 
     /your code here/ 
}

Вы можете найти больше информации здесь.

Если вы хотите использовать все три слова вместе для поиска матча, просто заменить \n , и место в вашей команде после -SimpleMatch

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .