2017-04-10 9 views
0

大文字ではないすべての文字を置き換えるシェルスクリプトを作成しようとしています。最初の引数は文字(これは他のものを置き換えます)ですが、他の引数はファイル名です。ターミナルでSedコマンドを実行しようとすると、うまく動作しますが、スクリプトでは、指定された文字で始まる行を除くすべての行が出力されます。 (私は標準出力に結果が欲しい。)bashスクリプトで文字を置換しないsed

for i in "${@:2}" 
do 
    if [ -f $i ] 
    then 
     sed "s/[^A-Z]/${1}/g" $i 
    else 
     echo "$i does not exist" 
    fi 
done 
+0

投稿したスクリプトでは、あなたが言うように振る舞うことはできません。そのスクリプトの内容と無関係に何かが起こっています。 –

+0

もう一度チェックしても問題なく動作します。皆さん、助けをいただきありがとうございました。ご迷惑をおかけして申し訳ありません。 – user3529379

答えて

0

あなたが交換してみてくださいすることができます

sed "s/[^A-Z]/${1}/g" $i 

によって:

sed -e "s/[^A-Z]/${1}/g" $i 

あなたが行うことができます大文字にすべての文字を置き換えるには:

sed -e 's/\(.*\)/\U\1/' $i 
+0

残念ながら、それは役に立ちません。 – user3529379

+0

申し訳ありませんが、私は質問を正しく読まなかった。私は私の答えを削除します! – Till

+0

アンサーを更新しました。助けてくれますか? – Till

0

あなたのスクリプトusiを確認しましたn1 f1、f2、f3と同じ内容で、動作していないと確信していますか?

line1 Something Something Something 
line2 Something Something Something 
line3 Something Something Something 

./input_test.sh x f1 f2 f3 
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx 
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx 
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx 
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx 
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx 
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx 
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx 
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx 
xxxxxxSxxxxxxxxxSxxxxxxxxxSxxxxxxxx 
関連する問題