bash:如何将文件中的文本读入字符串,修改它并将其保存为另一个文件?

时间:2016-11-15 13:27:18

标签: bash shell

我有一个文件(想象):

test() {
    echo ${%%NUMBER%%}
}

我需要:

  1. 将其读入字符串变量
  2. %%NUMBER%%替换为数字
  3. 将其保存到另一个文件,维护多线架构。
  4. 我是怎么做到的:

    #!/bin/bash
    
    # Full path of this script
    FILE=`readlink -f "${BASH_SOURCE[0]}"`
    
    # This directory path
    DIR=`dirname "${FILE}"`
    
    repl() {
        STRING=$(cat $DIR/skel.txt)
        STRING=$(echo $STRING | sed "s/%%NUMBER%%/$1/")
        echo $STRING
     }
    
    # try it
    repl 50 > ./out.sh
    
    # tried as well:
    # repl 50 | tee ./out.sh
    # echo "$(repl 50)" > ./out.sh
    # STRING=$(echo -e $STRING | sed "s/%%NUMBER%%/$1/")
    

    但我总是在out.sh文件中将所有内容都放在一行中。需要它保持多线,如源。

    感谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

repl() {
    sed "s/%%NUMBER%%/$1/" "$DIR/skel.txt"
}

效率更高,不会吃掉你宝贵的新品。