Я сталкиваюсь с проблемой при попытке заменить первую строку текстового файла с помощью команды awk в Unix.
Я использую этот синтаксис:
awk '{ (FS=OFS=""); if($19=="2") sub($88,"4");print $0 }' input.txt>output.txt
this команда не редактирует первую строку текстового файла. в чем причина этого?
Трудно понять, что вы пытаетесь сделать без примера вашего ввода и ожидаемого вывода (в частности, sub($88,"4") выглядит сомнительным - первый аргумент sub должен быть регулярным выражением).
Однако, если вы хотите, чтобы пустая FS была применена к первой записи (строке) вашего ввода, вам нужно установить ее . Трудно понять, что вы пытаетесь сделать, без примера ваш вход и ожидаемый результат (в частности, sub($88,"4") выглядят сомнительными - первый аргумент sub должен быть регулярным выражением). первая запись анализируется - с использованием правила BEGIN. Например, сравните
$ printf '123\n456\n' | awk '{FS=OFS=""; print $2}'
5
с
$ printf '123\n456\n' | awk 'BEGIN{FS=OFS=""} {print $2}'
2
5
Трудно понять, что вы пытаетесь сделать без примера вашего ввода и ожидаемого вывода (в частности, sub($88,"4") выглядит сомнительным - первый аргумент sub должен быть регулярным выражением).
Однако, если вы хотите, чтобы пустая FS была применена к первой записи (строке) вашего ввода, вам нужно установить ее . Трудно понять, что вы пытаетесь сделать, без примера ваш вход и ожидаемый результат (в частности, sub($88,"4") выглядят сомнительными - первый аргумент sub должен быть регулярным выражением). первая запись анализируется - с использованием правила BEGIN. Например, сравните
$ printf '123\n456\n' | awk '{FS=OFS=""; print $2}'
5
с
$ printf '123\n456\n' | awk 'BEGIN{FS=OFS=""} {print $2}'
2
5
Трудно понять, что вы пытаетесь сделать без примера вашего ввода и ожидаемого вывода (в частности, sub($88,"4") выглядит сомнительным - первый аргумент sub должен быть регулярным выражением).
Однако, если вы хотите, чтобы пустая FS была применена к первой записи (строке) вашего ввода, вам нужно установить ее . Трудно понять, что вы пытаетесь сделать, без примера ваш вход и ожидаемый результат (в частности, sub($88,"4") выглядят сомнительными - первый аргумент sub должен быть регулярным выражением). первая запись анализируется - с использованием правила BEGIN. Например, сравните
$ printf '123\n456\n' | awk '{FS=OFS=""; print $2}'
5
с
$ printf '123\n456\n' | awk 'BEGIN{FS=OFS=""} {print $2}'
2
5