#regex #linux #awk #grep
#регулярное выражение #linux #awk #grep
Вопрос:
У меня есть файл .txt, который содержит строки с разными путями к файлам. Я хочу просто исключить строки, содержащие определенные пути к файлам. Проблема в том, что я не могу обойти формат регулярных выражений, который используется с обычными инструментами.
sudo cat serv_list.txt | awk '!/C:\Windows\system32/' > serv2.txt
sudo cat serv_list.txt | awk '!/"C:\Windows\system32"/' > serv2.txt
или
sudo cat serv_list.txt | grep -a -v "C:Windowssystem32"
Я также пытался избежать косых черт, но это не сработало.
Файл выглядит примерно так:
Name PathName ProcessId StartMode
Dhcp C:Windowssystem32svchost... 784 Auto
ehRecvr C:WindowsehomeehRecvr.exe 543 Auto
defragsvc C:Windowssystem32svchos... 456 Manual
Audiosrv C:WindowsSystem32svchost.e.. 123 Manual
…
Вывод должен быть:
Name PathName ProcessId StartMode
ehRecvr C:WindowsehomeehRecvr.exe 543 Auto
…
Может кто-нибудь, пожалуйста, помогите мне, как я должен изменить выражение awk или grep, чтобы исключить все строки, содержащие путь к каталогу system32.
Спасибо 🙂
Извлечение файла из командной строки:
Извлечение файла из редактора:
Последние строки вывода: cat -v serv_list2.txt
FALSE Windows Update Normal 0 wuauserv C:Windowssystem32svchost.exe -k netsvcs 856 0 Share Process TRUE Auto LocalSystem Running OK Win32_ComputerSystem ELS-PC 0 0
FALSE FALSE Windows Driver Foundation - User-mode Driver Framework 0 Win32_Service Manages user-mode driver host processes. FALSE Windows Driver Foundation - User-mode Driver Framework Normal 1077 wudfsvc C:Windowssystem32svchost.exe -k LocalSystemNetworkRestricted 0 0 Share Process FALSE Manual LocalSystem Stopped OK Win32_ComputerSystem ELS-PC 0 0
FALSE FALSE WWAN AutoConfig 0 Win32_Service This service manages mobile broadband (GSM amp; CDMA) data card/embedded module adapters and connections by auto-configuring the networks. It is strongly recommended that this service be kept running for best user experience of mobile broadband devices. FALSE WWAN AutoConfig Normal 1077 WwanSvc C:Windowssystem32svchost.exe -k LocalServiceNoNetwork 0 0 Share Process FALSE Manual NT AuthorityLocalService Stopped OK Win32_ComputerSystem ELS-PC 0 0
kali@kali:~$
Вывод извлечения из
kali@kali:~$ awk -v IGNORECASE=1 '
{
gsub(/r/,"")
}
FNR==1{
print
next
}
($2!~/C:\Windows\system32\/)
' serv_list2.txt
FALSE WLAN AutoConfig Normal 1077 Wlansvc C:Windowssystem32svchost.exe -k LocalSystemNetworkRestricted 0 0 Share Process FALSE Manual LocalSystem Stopped OK Win32_ComputerSystem ELS-PC 0 0
FALSE TRUE WMI Performance Adapter 0 Win32_Service Provides performance library information from Windows Management Instrumentation (WMI) providers to clients on the network. This service only runs when Performance Data Helper is activated. FALSE WMI Performance Adapter Normal 0 wmiApSrv C:Windowssystem32wbemWmiApSrv.exe 1436 0 Own Process TRUE Manual localSystem Running OK Win32_ComputerSystem ELS-PC 0 0
FALSE FALSE Windows Media Player Network Sharing Service 0 Win32_Service Shares Windows Media Player libraries to other networked players and media devices using Universal Plug and Play FALSE Windows Media Player Network Sharing Service Normal 1077 WMPNetworkSvc "C:Program FilesWindows Media Playerwmpnetwk.exe" 0 0 Own Process FALSE Manual NT AUTHORITYNetworkService Stopped OK Win32_ComputerSystem ELS-PC 0 0
FALSE FALSE Parental Controls 0 Win32_Service This service is a stub for Windows Parental Control functionality that existed in Vista. It is provided for backward compatibility only. FALSE Parental Controls Normal 1077 WPCSvc C:Windowssystem32svchost.exe -k LocalServiceNetworkRestricted 0 0 Share Process FALSE Manual NT AuthorityLocalService Stopped OK Win32_ComputerSystem ELS-PC 0 0
FALSE FALSE Portable Device Enumerator Service 0 Win32_Service Enforces group policy for removable mass-storage devices. Enables applications such as Windows Media Player and Image Import Wizard to transfer and synchronize content using removable mass-storage devices. FALSE Portable Device Enumerator Service Normal 0 WPDBusEnum C:Windowssystem32svchost.exe -k LocalSystemNetworkRestricted 0 0 Share Process FALSE Manual LocalSystem Stopped OK Win32_ComputerSystem ELS-PC 0 0
FALSE TRUE Security Center 0 Win32_Service The WSCSVC (Windows Security Center) service monitors and reports security health settings on the computer. The health settings include firewall (on/off), antivirus (on/off/out of date), antispyware (on/off/out of date), Windows Update (automatically/manually download and install updates), User Account Control (on/off), and Internet settings (recommended/not recommended). The service provides COM APIs for independent software vendors to register and record the state of their products to the Security Center service. The Action Center (AC) UI uses the service to provide systray alerts and a graphical view of the security health states in the AC control panel. Network Access Protection (NAP) uses the service to report the security health states of clients to the NAP Network Policy Server to make network quarantine decisions. The service also has a public API that allows external consumers to programmatically retrieve the aggregated security health state of the system. FALSE Security Center Normal 0 wscsvc C:WindowsSystem32svchost.exe -k LocalServiceNetworkRestricted 784 0 Share Process TRUE Auto NT AUTHORITYLocalService Running OK Win32_ComputerSystem ELS-PC 0 0
FALSE TRUE Windows Search 0 Win32_Service Provides content indexing, property caching, and search results for files, e-mail, and other content. FALSE Windows Search Normal 0 WSearch C:Windowssystem32SearchIndexer.exe /Embedding 2324 0 Own Process TRUE Auto LocalSystem Running OK Win32_ComputerSystem ELS-PC 0 0
FALSE TRUE Windows Update 0 Win32_Service Enables the detection, download, and installation of updates for Windows and other programs. If this service is disabled, users of this computer will not be able to use Windows Update or its automatic updating feature, and programs will not be able to use the Windows Update Agent (WUA) API. FALSE Windows Update Normal 0 wuauserv C:Windowssystem32svchost.exe -k netsvcs 856 0 Share Process TRUE Auto LocalSystem Running OK Win32_ComputerSystem ELS-PC 0 0
FALSE FALSE Windows Driver Foundation - User-mode Driver Framework 0 Win32_Service Manages user-mode driver host processes. FALSE Windows Driver Foundation - User-mode Driver Framework Normal 1077 wudfsvc C:Windowssystem32svchost.exe -k LocalSystemNetworkRestricted 0 0 Share Process FALSE Manual LocalSystem Stopped OK Win32_ComputerSystem ELS-PC 0 0
FALSE FALSE WWAN AutoConfig 0 Win32_Service This service manages mobile broadband (GSM amp; CDMA) data card/embedded module adapters and connections by auto-configuring the networks. It is strongly recommended that this service be kept running for best user experience of mobile broadband devices. FALSE WWAN AutoConfig Normal 1077 WwanSvc C:Windowssystem32svchost.exe -k LocalServiceNoNetwork 0 0 Share Process FALSE Manual NT AuthorityLocalService Stopped OK Win32_ComputerSystem ELS-PC 0 0
kali@kali:~$
Комментарии:
1. Спасибо, что продемонстрировали свои усилия в виде кода, не могли бы вы добавить образцы ввода и ожидаемого результата в свой вопрос для лучшего понимания, пожалуйста, отредактируйте свой пост.
2. Спасибо за напоминание. Я обновил вопрос. Я надеюсь, что это поможет лучше понять проблему.
Ответ №1:
Не могли бы вы, пожалуйста, попробовать следующее, написанное и протестированное с показанными примерами в GNU awk
.
awk '!/[cC]:\[wW][iI][nN][dD][[oO][wW][sS]\[sS][yY][sS][tT][eE][mM]32/' Input_file
или
awk 'tolower($0) !~ /c:\windows\system32/' Input_file
Похоже, что в системе OP нет IGNORECASE
опции, поэтому придерживайтесь вышеуказанного подхода, при котором сопоставление маленькой и заглавной буквы в обоих случаях для сопоставления.
Не знал, что это закончится здесь, поскольку образцы OP постоянно менялись. Или используйте grep
опцию игнорирования здесь.
Комментарии:
1. Тем не менее, спасибо за ответ, я по-прежнему предоставляю все строки в качестве выходных данных. Я добавил еще два скриншота, которые могут помочь. Может быть, проблема в файле, поскольку он работал, когда вы его тестировали? Файл был создан в Windows, может быть, есть проблема?
2. @thepaintedcow, похоже, у вас есть возврат каретки в вашем Input_file, можете ли вы запустить один раз
cat -v Input_file
в своем файле и сообщить мне, если увидите там управляющие символы M?3. Я пробовал, см. Обновленный пост выше. К сожалению, это, похоже, не работает.
4. @thepaintedcow,
awk -v IGNORECASE=1 '{gsub(/r/,"")} FNR==1{print;next} !/C:\Windows\system32\/' Input_file
сработало для меня, разве это не сработало для вас? Для ваших показанных примеров, пожалуйста, сообщите здесь, о чем не идет речь, пожалуйста.5.
!/[cC]:\[wW][iI][nN][dD][[oO][wW][sS]\[sS][yY][sS][tT][eE][mM]32/
должно быть записано как простоtolower($0) !~ /c:\windows\system32/
.