在不同的目录中存在许多具有此结构的文件,这些文件命名为等于idea.js:
get.idea("tagIdea1","Some idea1 tag abc");
get.idea("idea1","Some idea1 description1 abc");
get.idea("tagIdea2","Some idea2 tag abc");
get.idea("idea2","Some idea2 description2 abc");
...
......So像这样..。许多想法与其对应的概念描述。
有必要从每个get.idea函数中获取第二个参数,并在找到de idea.js文件的同一个目录中创建对应的.csv文件,每个文件的秒参数如下所示:
Idea, descripcion
"Some idea1 tag abc","Some idea1 description1 abc"
"Some idea2 tag abc","Some idea2 description2 abc"我认为使用grep命令和正则表达式将单词存储在数组中并在一个周期内增加每个想法的数量,但我不知道如何创建与每个想法的第二个参数相匹配的正则表达式,以及如何将数组中的存储导出到一个新的.csv文件中,该结构位于找到idea.js文件的同一个目录中。你能帮帮我吗。
发布于 2018-05-04 16:56:00
$ sed -n '/^get\.idea/s/^.*(\(.*\)).*/\1/;p' input | awk -F, 'BEGIN {print "Idea, Description";OFS=","} (NR % 2 ) == 1 {save=$2} (NR % 2) ==0 {print save, $2}'
Idea, Description
"Some idea1 tag abc","Some idea1 description1 abc"
"Some idea2 tag abc","Some idea2 description2 abc"我们使用sed删除所有无关的cruft,然后通过解析其他行来使用awk来生成CSV文件。
发布于 2018-05-04 17:14:42
使用单个awk命令:
awk 'BEGIN{ print "Idea, Description"; FS = OFS = "," }
{ desc = substr($2, 1, length($2) - 2) }
{ if ($1 ~ /"tag/){ tag = desc } else { print tag, desc } }' idea.js产出:
Idea, Description
"Some idea1 tag abc","Some idea1 description1 abc"
"Some idea2 tag abc","Some idea2 description2 abc"扩展方法以满足“在找到de idea.js文件的同一目录中创建其对应的D3文件”的要求:
创建idea_to_csv.awk脚本:
#!/bin/awk -f
BEGIN{ print "Idea, Description"; FS=OFS="," }
{ desc = substr($2, 1, length($2)-2) }
{ if ($1 ~ /"tag/){ tag = desc } else { print tag, desc } }find . -type f -name "idea.js" -execdir sh -c 'awk -f ~/idea_to_csv.awk "$1" > idea.csv' _ {} \;将路径~/idea_to_csv.awk更改为创建idea_to_csv.awk的实际位置
https://unix.stackexchange.com/questions/441816
复制相似问题