Я изо всех сил пытался написать программу awk, которая будет принимать входные файлы и отображать исходное и разделенное пробелами имя файла только во втором столбце. Почему следующая команда не работает для этого?

echo -e "abc/123\ndef/456" | awk '{l=$1; sub("./*", "", l); print "mv " $1, $l}'

Для записи вышеприведенных выводов

mv abc/123 abc/123
mv def/456 def/456

1 ответ1

0

l - это переменная, которая содержит замененный текст. $l - это значение номера столбца, на которое ссылается значение, хранящееся в переменной l . Поскольку значение l не начинается с цифр, awk рассматривает строку как число "0", поэтому вы получаете $0 который является текущей записью.

Вы хотите это вместо

print "mv", $1, l

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .