Почему awk sub не заменяет мой ввод
Я изо всех сил пытался написать программу 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 ответ
Решение
l
переменная, которая содержит замененный текст $l
это значение номера столбца, на которое ссылается значение, хранящееся в переменной l
, Поскольку l
значение не начинается с цифры, awk рассматривает строку как число "0", так что вы получите $0
которая является текущей записью.
Вы хотите это вместо
print "mv", $1, l