Утилита awk имеется на операционках семейства *nix. Есть также она и на платформе Windows в лице системы MSYS - Minimal SYStem (см. "Средства анализа текстовых логов"). В командной строке awk указывают шаблон с набором необходимых действий к строке, которая удовлетворяет шаблону, и входной файл. Как это работает, лучше показать на примере (командная строка MSYS).
Преобразование текста таким образом, что конец строки в стиле *nix (в
конце каждой строки только код 0x0A) преобразуется в конец строки в
стиле MS-DOS (в конце каждой строки последовательность 0x0D 0x0A).
Указанное преобразование файла C:\TEMP\0A.txt в файл C:\TEMP\0D0A.txt
Это делает команда:
$ awk '/./{printf("%s\r\n", $0)}' C:\\TEMP\\0A.txt >C:\\TEMP\\0D0A.txt
или команда:
$ awk '{printf("%s\r\n", $0)}' C:\\TEMP\\0A.txt >C:\\TEMP\\0D0A.txt
В первом варианте примера необходимые действия задаются строкой
/./{printf("%s\r\n", $0)}
Все, что слева от фигурных скобок - это шаблон, которому должна
соответствовать строка, в этом примере /./ означает любой символ, т. е.
шаблону будут удовлетворять все строки. Если шаблон отсутствует, как,
например, во втором варианте команды:
{printf("%s\r\n", $0)}
... то это означает, что действия применяются ко всем строкам. Действие
тут самое простейшее - берется строка ($0), в конце добавляется
последовательность кодов 0x0D 0x0A ("\r\n"), и то, что получилось,
выводится. Все это делает оператор printf. Необходимые действия также
могут быть записаны в файл (это позволяет писать на awk сложные
программы), который указывается в командной строке:
$ awk -f C:\\TEMP\\awk_commands.txt C:\\TEMP\\0A.txt >C:\\TEMP\\0D0A.txt
Содержимое файла awk_commands.txt:
{printf("%s\r\n", $0)}
2. Обратное преобразование (конец строки а-ля MS-DOS преобразуется в конец строки а-ля *nix):
$ awk '{printf("%s\n", $0)}' C:\\TEMP\\0D0A.txt >C:\\TEMP\\0A.txt
|