首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Mac上的批处理文件,该文件会更改为一组文件。

在Mac上的批处理文件,该文件会更改为一组文件。
EN

Stack Overflow用户
提问于 2015-01-21 19:01:39
回答 1查看 58关注 0票数 0

我刚开始制作批处理文件,非常感谢您的帮助,这可能是一个非常简单的问题。

我在一堆目录中有一堆文件,如下所示:

代码语言:javascript
复制
dir-1/index.html
dir-2/index.html
dir-3/index.html
...
dir-150/index.html

每个文件都在HTML中包含文本“用第二列替换”和“用第三列替换”。

然后,我有一个包含三列信息的tsv文件,如下所示:

代码语言:javascript
复制
dir-1        dog          cat     
dir-2        mouse        frog
dir-3        circus       clown
...
dir-150      last         one

我试图批量编辑每个index.html文件,将第2列中的数据替换为第二列中的文本,第3列中的“用第三列替换”替换为第1列中列出的特定目录。对于如何在UNIX/Mac中这样做,有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-21 23:59:20

假设changes.tab有选项卡分隔的值,如上面的示例(而不是像您的状态那样分隔逗号),那么您就可以开始这样做了:

代码语言:javascript
复制
#!/bin/sh

cat changes.tab | while read line; do
    TARGETDIR="`echo "$line" | awk -F"\t" '{ print $1 }'`"
    COL2="`echo "$line" | awk -F"\t" '{ print $2 }'`"
    COL3="`echo "$line" | awk -F"\t" '{ print $3 }'`"

    if [ -d "$TARGETDIR" ]; then
        cat "$TARGETDIR/index.html" |
        sed "s/Replace with second column/$COL2/g" |
        sed "s/Replace with third column/$COL3/g" > temp
        mv temp "$TARGETDIR/index.html"
    fi
done

测试并根据你的具体需要进行调整。另外,请注意,这将替换目标文件,,因此首先创建一个安全副本.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28074793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档