Эта серия команд редактирует idea.js и экспортирует ее как idea.csv ;
sed -n '/^get\.idea/s/^.*(\(.*\)).*/\1/ p' idea.js |
awk -F, 'BEGIN {print "idea, description";OFS=","} (NR % 2 ) == 1
{save=$2} (NR % 2) == 0 {print save, $2}' > idea.csv
И что мне нужно сделать, это запустить точно такие же команды, но используя find
для поиска в нескольких файлах с одинаковым именем idea.js , которые находятся в нескольких каталогах, экспортируя каждый из этих файлов в тот же каталог, в котором был найден idea.js .
Я пытался разными способами, но получаю разные ошибки.
Здесь результат не соответствует ожидаемому:
find . -type f -name "idea.js" \( \
-exec sed -n '/^get\.idea/s/^.*(\(.*\)).*/\1/ p' idea.js {} \; -o \
-exec true \; \) \
-exec awk -F, 'BEGIN {print "idea, description";OFS=","} (NR % 2 ) == 1
{save=$2} (NR % 2) == 0 {print save, $2}' > idea.csv {} \;
А здесь:
find . -type f -name "idea.js" \(
-exec sed -n '/^get\.idea/s/^.*(\(.*\)).*/\1/ p' idea.js |
awk -F, 'BEGIN {print "idea, description";OFS=","} (NR % 2 ) == 1
{save=$2} (NR % 2) ==0 {print save, $2}' > idea.csv {} \)
Я получаю эту ошибку:
idea, description
awk: cannot open {} (No such file or directory)
find: missing argument to `-exec'
Try 'find --help' for more information.
Я хотел бы узнать, как сделать это непосредственно из командной строки и как скрипт, который будет выполняться следующим образом:
$ sh script.sh
Я ценю помощь.