範囲内の文字列を置き換える [重複]

範囲内の文字列を置き換える [重複]

次のテキストファイルがあるとしましょう。

A1
A2
A3
A4
A7
A27
A31
A56
A100
A8
A11

A1〜A30をA1に置き換え、A31〜A100をsed、awk、またはforループを使用してA2に置き換える必要があるこのような出力が必要です。

A1
A1
A1
A1
A1
A1
A2
A2
A2
A1
A1

私は初心者です。助けてくれてありがとう。

私はこれを試しました

sed -i "s/(A1:A10)/A1/g" file.txt

屋根ふきも試しました。コーディングを改善してください。

for i in file.txt; 
  do cat "$i";
     if ((A*>A10)); 
         then
         sed -e 's/A*/A1;
     else sed -e 's/A*/A2;
     fi
 done 

ベストアンサー1

こんにちはウマールこの1行のコマンドを試すことができます(BashとZshの両方で動作します)。直接説明します。ファイル出力を繰り返しますが、数字だけを切り捨てます(すべての項目が「A」で始まるため)。次に、各項目をフィルタリングします。 if -elif の範囲が 1 から 30 の場合は「A1」をエコーし​​ますが、31 から 100 の場合は、質問で要求されたとおりに「A2」をエコーし​​ますが、すべて 1 行に表示されます。

for i in `cat text_file |cut -d 'A' -f 2`; do if (($i > 0 && $i <= 30)); then echo 'A1'; elif (($i > 30 && $i <= 100)); then echo 'A2';  fi ; done

動作していることを確認して確認してください。私も新しい答えです。挨拶。

おすすめ記事