Как я могу сделать это заявление awk работать на Windows?

awk '/DoLabelQuery(self)/||/QName[[[[:digit:]][[[:digit:]]]/||/QName[[[[:digit:]]]/ || /;BUTTON =/ || /endMethod/ || /endmethod/ ||  /add(/ || /;CODE = /'  HELLO.fsl > x.txt

Я знаю, что это должно быть сделано в файл и запустить с помощью awk -f. Я просто не могу понять правильный синтаксис. Пример выше работает в Linux в терминале.

это может показаться сложным, но все, что я ищу, это 5-6 примеров текста, где if found приводит к тому, что строка записывается в x.txt. The QName name элемент просто ищет QName[##] или QName[#].

5
задан Eric Renouf
19.05.2023 5:09 Количество просмотров материала 2526
Распечатать страницу

2 ответа

когда я попытался запустить вашу команду сначала я получил ошибку:

awk: '/DoLabelQuery\(self\)/
awk: ^ invalid char ''' in expression
'/QName\[[[[:digit:]][[[:digit:]]]/' is not recognized as an internal or external command,
operable program or batch file.
'/QName\[[[[:digit:]]]/' is not recognized as an internal or external command,
operable program or batch file.
'/' is not recognized as an internal or external command,
operable program or batch file.
'/endMethod/' is not recognized as an internal or external command,
operable program or batch file.
'/endmethod/' is not recognized as an internal or external command,
operable program or batch file.
'/add\' is not recognized as an internal or external command,
operable program or batch file.
'/' is not recognized as an internal or external command,
operable program or batch file.

что делает его показаться, что все части awk скрипт разбирается как отдельные слова, и многие из них затем обрабатываются, как если бы они были командами после ||. Это потому, что, как это так вопрос показывает одинарные кавычки на самом деле не кавычки в командной консоли Windows, как они есть в (большинство?) оболочки linux. cmd использует только двойные кавычки, что, к счастью, хорошо работает для эта команда кажется, поэтому решение здесь использовать:

awk "/DoLabelQuery\(self\)/||/QName\[[[[:digit:]][[[:digit:]]]/||/QName\[[[[:digit:]]]/ || /;BUTTON =/ || /endMethod/ || /endmethod/ ||  /add\(/ || /;CODE = /"  HELLO.fsl > x.txt

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

1
отвечен Eric Renouf 2023-05-20 12:57

Я решил использовать команду FINDSTR для Windows. Он более ограничен, но он работает должным образом на платформе Windows. Вижу https://technet.microsoft.com/en-us/library/bb490907.aspx

0
отвечен Peter Dixon 2023-05-20 15:14

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх