Вам не нужно указывать каталог для подтверждения. По умолчанию он копается в текущем каталоге.
I also noticed that the directory has symbolic links
Тогда было бы неплохо посмотреть руководство (либо man ack
, либоack --man
)и выполнить поиск по запросу «ссылка». Первое, что вы найдете, это опция:
--[no]follow
Follow or don't follow symlinks, other than whatever starting files
or directories were specified on the command line.
This is off by default.
Это означает, что если вы хотите, чтобы подтверждение переходило по символическим ссылкам, вам необходимо указать параметр --follow
.
В вашей команде awk
есть несколько ошибок.
Следующее будет импортировать $arg
как переменную awk
arg
:
awk -F, -v OFS=, -v arg="$arg" '{ $2 = arg; print }' >"$outfile"
$2
невозможно интерпретировать как второй позиционный параметр здесь или в вашем коде, поскольку он встречается в одинарных кавычках, а оболочка не раскрывает переменные в одинарных кавычках.
OFS
иarg
(оба являются переменными awk
)устанавливаются с помощью -v
в командной строке. Вы не используете -v
для установки OFS
и неправильно используете -v
перед фактическим кодом awk
. Это дало бы вам ошибку (, о которой вы не упоминаете ). На самом деле -OFS,
с GNU awk
означает «включить оптимизацию и установить разделитель полей ввода на строку S,
».
Обратите внимание: если$arg
(переменная оболочки )содержит обратную косую черту, которую необходимо сохранить, лучше вместо этого передать значение через среду, поскольку в противном случае они будут интерпретированыawk
:
arg="$arg" awk -F, -v OFS=, '{ $2 = ENVIRON["arg"]; print }' >"$outfile"
Предполагается, что выходной файл должен быть $outfile
, а не outfile
.
Связанные: