2012-07-03 199 views
0

我必須編輯android shell中的文本文件。shell腳本搜索和替換文本文件

所以我輸入這個shell腳本。

但我的Galaxy Nexus沒有Sed,Awk也沒有。

[email protected]:/ $ sed -e "s/old_pattern/new_pattern/g" file_name > modify_file 
/system/bin/sh: sed: not found 

它不起作用。

如何在文本文件中修改old_patternnew_pattern

有沒有可能在Shell腳本中?

編輯Shell腳本

#!/system/bin/sh 
ARGS=4 
BAD=65 

if [ $# -ne "$ARGS" ] 
then 
    echo "Usage: `basename $0` TARGET_FILE,OLD_PATTERN,NEW_PATTERN,MODIFY_FILE" 
    exit $BAD 
fi 

old_pattern=$2 
new_pattern=$3 
modify_file=$4 

if [ -f "$1" ] 
then 
    target_file=$1 
else 
    echo "\"$3\" Does not exist." 
    exit $BAD 
fi 

exit 0 

解決方案:

[email protected]:/ $ while read STRING 
>do 
>echo "${STRING//old_pattern/new_pattern}" >> modify_file_name 
>done < target_file_name 
[email protected]:/ $ 

回答

1

有可能用純bash,但是這將是對大文件非常slooow。

while read STRING 
do 
    echo "${STRING//old_pattern/new_pattern}" >> modify_file 
done < file_name 

ps。哦,我剛剛提到你的外殼不是bash。好像它只是sh。這不適用於sh

+0

先生,我很抱歉,但我的shell腳本有一個錯誤。 –

+0

你會檢查編輯腳本嗎? –

+0

這種替換不適用於'sh'。這是'bash'功能。像往常一樣安裝了sed。嘗試檢查它,並啓動腳本作爲bash腳本(你需要改變她的爆炸)。看起來像純粹的'sh'不能代替變量值。你有沒有安裝其他的工具,例如'ed'或'awk'? – rush