2013-08-22 37 views
1

我写的bash脚本应该修改我的文本文件。问题在于操作速度。每个文件有4行我想修改。sed或运算符在正则表达式集

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

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 

我不知道如何concatinate我所有的sed命令在一个命令或两个,所以工作会做得更快(我想!)

我试过OR运算符正则表达式|但没有成功。

回答

4

你试过

sed -i -e 's/pattern/replacement/g' -e 's/pattern1/replace1/g' file 
+1

谢谢你的方法。我不知道这件事。 :) – Alireza

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 
+0

谢谢你,但加入'$ cpr'就像你说的错误,这不是我的问题,但。再次感谢。 – Alireza