以下を使用して簡単なスクリプトを作成しようとしています。sed基本的な検索と置換機能。オリジナルファイルが欲しい影響を受けないそして、「file.n」という新しいファイルを作成します(nはインクリメントされます)。
私の主な問題は、新しいファイルに番号を付けることです。以下は、n = 1とn = 2の静的関数を含む基本コードです。
#!/bin/bash
n=1
if [[ -f file.$n ]]
then sed -e 's/'$2'/'$3'/g' $1 > file.$((n+1))
else sed -e 's/'$2'/'$3'/g' $1 > file.1
fi
端末の入力は次のとおりです。./script text_sample.txt word_1 word_2
このコードは最初と2番目の使用の両方でうまく機能します(file.1が存在しない場合はここに結果が保存され、そうでない場合はfile。(n + 1)、つまりfile.2に保存されます)。
しかし、file.3、file.4などについてはどうすればいいですか?このスクリプトを起動するたびにn = 1で始まるのですが、どうすればいいのかわかりません。
特定の変数をコマンドとして使用して、いくつかのエクスポート変数を試しました(整数をよりグローバルにするため)。いくつかの屋根が必要な場合があります。
どんな助けでも大変感謝します。
答え1
この試み:
#!/bin/bash
n=1
while [[ -f file.$n ]]; do
n=$((n+1)
done
sed -e 's/'$2'/'$3'/g' $1 > "file.${n}"
答え2
sedのバックアップ機能をお試しくださいsed -i [SUFFIX]