使用find,sed和awk在目录结构中搜索

时间:2018-05-06 22:11:02

标签: shell awk sed find

这一系列命令编辑 idea.js 并将其导出为 idea.csv ;

find

我需要做的是运行完全相同的命令,但使用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 {} \; 搜索具有相同 idea.js 名称的多个文件,这些文件位于多个目录中,导出每个找到 idea.js 的同一目录中的那些文件。

我尝试了很多方法,但我得到了不同的错误。

这里结果不是预期的结果:

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

我想学习如何直接从命令行执行此操作,并以脚本方式执行此操作:

def process_data(some_data):
    return_data = {}
    for datum in some_data:
        main_key, values = datum.split('#')
        return_data.setdefault(main_key, []).append(dict(
            tuple(v.split(':')) for v in values.split('&')
        ))
    return return_data

我很感激帮助。

0 个答案:

没有答案