【问题标题】:Stream edit text file and replace string with increments流式编辑文本文件并用增量替换字符串
【发布时间】:2021-04-21 18:34:05
【问题描述】:

我想将 markdown 文件复制到 ~200 个文件,并用递增的更改替换文档中的一些字符串。我该怎么做?我是一名新的 Web 开发人员,我对 PHP 和 Node.js 的熟悉程度一般,但 Linux 用户还算不错。我正在考虑使用sed,但无法完全解决。

假设我想复制:

post.md    "this is post _INCREMENT_"

然后我运行:

run generate "post.md" --number 2

生成:

post1.md    "this is post 1"
post2.md    "this is post 2"

【问题讨论】:

  • 在我看来,sed 不合适,因为它无法计数。我会推荐awkperl
  • -number 2 选项的用途是什么?
  • 增加2倍

标签: node.js bash awk text markdown


【解决方案1】:

结合sedbash,请尝试以下操作:

#!/bin/bash

# show usage on improper arguments
usage() {
    echo "usage: $1 filename.md number"
    exit 1
}

file=$1                         # obtain filename
[[ -n $file ]] || usage "$0"    # filename is not specified
num=$2 || usage "$0"            # obtain end bumber
(( num > 0 )) || usage "$0"     # number is not specified or illegal

for (( i = 1; i <= num; i++ )); do
    new="${file%.md}$i.md"      # new filename with the serial number
    cp -p -- "$file" "$new"     # duplicate the file
    sed -i "s/_INCREMENT_/$i/" "$new"
                                # replace "_INCREMENT_" with the serial number
done

将上面的脚本保存为文件generate 或其他文件,然后运行:

bash generate post.md 2

【讨论】:

    猜你喜欢
    • 2015-11-30
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    相关资源
    最近更新 更多