Утилита 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)}
Все, что слева от фигурных скобок - это шаблон, которому должна соответствовать строка, в этом примере /./ означает любой символ, т. е. шаблону будут удовлетворять все строки. Если шаблон отсутствует, как, например, во втором варианте команды:
... то это означает, что действия применяются ко всем строкам. Действие тут самое простейшее - берется строка ($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:
2. Обратное преобразование (конец строки а-ля MS-DOS преобразуется в конец строки а-ля *nix):
$ awk '{printf("%s\n", $0)}' C:\\TEMP\\0D0A.txt >C:\\TEMP\\0A.txt
|