1

我编写的 bash 脚本应该修改我的文本文件。问题是运行速度。我要修改的每个文件有 4 行。

这是我修改给定文件夹中所有 .txt 文件的 bash 脚本:

srcdir="$1" //source directory
cpr=$2 //given string argument 

find $srcdir -name "*.txt" | while read i; do
    echo "#############################"
    echo "$i"
    echo "Custom string: $cpr"
    echo "#############################"

    # remove document name and title
    sed -i 's_document=.*\/[0-9]\{10\}\(, User=team\)\?__g' $i

    # remove document date
    sed -i 's|document date , [0-9]\{2\}\/[0-9]\{2\}\/[0-9]\{4\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\} MDT||g' $i

    # remove document id
    sed -i 's|document id = 878h67||g' $i

    # replace new producer
    sed_arg="-i 's|Reproduced by $cpr|john smith|g' $i"
    eval sed "$sed_arg"

done

我不知道如何将我的所有sed命令连接到一个或两个命令中,所以这项工作会更快完成(我认为!)

我已经为正则表达式尝试了 OR 运算符,|但没有成功。

4

2 回答 2

4

你有没有尝试过

sed -i -e 's/pattern/replacement/g' -e 's/pattern1/replace1/g' file
于 2013-08-22T02:06:54.530 回答
2
sed -i '
        s_document=.*\/[0-9]\{10\}\(, User=team\)\?__g;
        s|document date , [0-9]\{2\}\/[0-9]\{2\}\/[0-9]\{4\} [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\} MDT||g;
        s|document id = 878h67||g;
        s|Reproduced by '"$cpr"'|john smith|g' $i
于 2013-08-22T02:08:51.140 回答