У меня есть команда bash, которая создает список файлов, для которых мне нужно изменить имя файла. так я думал использовать что-то вроде этого:Как изменить переменную awk с sed
mycommand | awk {mv $1 altered$1}
проблемы заключается в том, что вторые $ 1 должны быть изменены с заменой SED некоторых регулярными выражениями. Как я могу применить sed к второму параметру?
Я пробовал с $() и |, но он не работает.
Я также попытался
awk '{print $1 sed "s/[^A-Za-z0-9._-]/_/g" <<< $1}'
awk: cmd. line:1: Unexpected token
Рассматривали ли вы цикл с помощью возвращаемого списка имен файлов из вашей команды и изменяли их с помощью 'sed'? 'для имени файла в $ (mycommand); do mv $ filename $ (sed "s/[^ A-Za-z0-9 ._-]/_/g" <<< $ filename); done'. – Abdou
Обратите внимание, что '' для имени файла в $ (mycommand) 'не будет выполнено, если какое-либо имя файла содержит пробелы. Цикл 'while' может избежать этого. – John1024
Вспомните, что 'awk' имеет функции' sub() 'и' gsub() 'и что они могут делать большую часть того, что может сделать команда sed/str/repl /''. Возможно, вам понадобится выполнить несколько операций '[g] sub (/ regex /," repl "," str ")', чтобы получить то, что вам нужно. Удачи. – shellter