假设我有文本文件,例如
A1
A2
A3
A4
A7
A27
A31
A56
A100
A8
A11
我想要这样的输出,其中 A1 到 A30 应替换为 A1,A31 到 A100 应替换为 A2,使用 sed、awk 或 for 循环
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
你好欧麦尔您可以尝试使用这个单行命令(它适用于 Bash 和 Zsh )让我解释一下自己:我迭代文件输出,但我只修剪数字(因为所有条目都以“A”开头),然后,我过滤每个if-elif 块的行,其中如果它在 1 到 30 之间的范围内,则回显“A1”,但如果它在 31 到 100 之间,则回显“A2”,正如您在问题中所要求的那样,但所有这些都在一行中。
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
请检查并确认是否有效,我也是新回答。问候。