У меня есть следующая команда AWK, которая работает отлично:AWK: использование экранирующих символов в для заявления
awk 'BEGIN { ORS = " " } {print 22, $1, NR; for(i=2;i<=NF;++i) print $i}{print "\n"}' file
Что она делает это вставить два столбца: значение 22, как первый, и номер факса в строке, третий (см. this question). Я попытался запустить эту команду в цикле следующим образом:
for p in 20 21 22
do
awk 'BEGIN { ORS = " " } {print $p, \$1, NR; for(i=2;i<=NF;++i) print \$i}{print "\n"}' file > file$p
done
Так вместо 22 в первом столбце, 3 файла сделаны где каждый файл имеет 20, 21 или 22 в качестве первого столбца. К сожалению, это не работает, и я получаю сообщение: ^обратный слэш не последний символ в строке. Возможно, это связано с тем, как я избежал $ символов, но я не знаю, как это сделать ... любые идеи?
не избежать '$ 'в awk-скрипте. –