次のテキストファイルがあるとしましょう。
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
動作していることを確認して確認してください。私も新しい答えです。挨拶。