Я сделал что-то подобное, но ничего не печатается
#!/bin/bash
if [ $# -eq 0 ]
then
echo 'There are no words'
exit 1
fi
echo | awk 'BEGIN {gsub(/ARGV[1]/,"ARGV[2]"); print}' $@
Я думаю, это потому, что у меня нет указанного файла, но как я могу его указать, если я уже прочитал слова из ввода командной строки в awk





Вы можете сделать что-то вроде этого
#!/bin/bash
if [ $# -lt 3 ]
then
echo "usage: $0 str1 str2 file [file...]"
exit 1
fi
exec awk 'BEGIN {s=ARGV[1]; r=ARGV[2]; delete ARGV[1]; delete ARGV[2]} {gsub(s,r); print}' "$@"
если вы используете аргументы awk, которые не являются именами файлов, вы должны удалить их.
Я думаю, это должен быть {gsub(s,r); print}, чтобы он читал s как переменную и отлично работал
@RobertChrisstian, я плохо, мне следовало удалить /. Исправлено.
Он делает то, что должен, большое спасибо!