我需要删除一些文本文件中小于30%
的任何数值。下面是文本文件的内容和我用来实现这一点的当前代码。
我在找一个更好,更有效的方法来做这件事。
文件1.csv
25%
80%
22%
67%
45%
30%
15%
5%
13%
文件2.csv
25% 80% 22% 67% 45% 30% 15% 5% 13%
代码:
sed -i 's/30%//g' file.csv
sed -i 's/29%//g' file.csv
sed -i 's/28%//g' file.csv
sed -i 's/27%//g' file.csv
sed -i 's/26%//g' file.csv
sed -i 's/25%//g' file.csv
sed -i 's/24%//g' file.csv
sed -i 's/23%//g' file.csv
sed -i 's/22%//g' file.csv
sed -i 's/21%//g' file.csv
sed -i 's/20%//g' file.csv
sed -i 's/19%//g' file.csv
sed -i 's/18%//g' file.csv
sed -i 's/17%//g' file.csv
sed -i 's/16%//g' file.csv
sed -i 's/15%//g' file.csv
sed -i 's/14%//g' file.csv
sed -i 's/13%//g' file.csv
sed -i 's/12%//g' file.csv
sed -i 's/11%//g' file.csv
sed -i 's/10%//g' file.csv
sed -i 's/9%//g' file.csv
sed -i 's/8%//g' file.csv
sed -i 's/7%//g' file.csv
sed -i 's/6%//g' file.csv
sed -i 's/5%//g' file.csv
sed -i 's/4%//g' file.csv
sed -i 's/3%//g' file.csv
sed -i 's/2%//g' file.csv
sed -i 's/1%//g' file.csv
sed -i 's/0%//g' file.csv
最佳答案
如果您不介意使用perl
对于您的多行或单行,您可以:
perl -pe 's/[0-2][0-9]%|^[0-9]%| +[0-9]%//g' file
如果不需要空行,请尝试:
perl -pe 's/[0-2][0-9]%|^[0-9]%| +[0-9]%//g && s/\r?\n//g' file
或
perl -lne 'print $& while /[3-9][0-9]%/g' file
或
grep
和-P
grep -Po '[3-9][0-9]%' file
关于regex - 小于N%时删除数值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46222739/