在linux文件中的特定模式之前只读取两个字符

时间:2017-08-16 10:37:25

标签: linux shell scripting

我有一个像

这样的文件
Filesystem            Size  Used Avail Use% Mounted on 
/abc/xyz/mnop          
                       82G  7.7G   70G  10% /  
hello                  32G  922M   31G   3% /abc/asd 
/abc/xyz              477M  118M  334M  27% /asd   
/abc/xyz               50G  9.4G   38G  21% /ad  
/abc/xyz               79G   27G   49G  36% /asd   
/abc/xyz               30G  7.9G   21G  29% /sd  
/abc/xyz              197G  2.4G  185G   2% /asd  
xyz:/backups/abc      
                      500G   18G  483G   4% /asdas  
abc                   
                      1.9T  1.5T  405G  79% /media/Scratch     

我只想要%之前的两个字符,即10,3,27,21等等,我将逐一比较85或更大或更小的值。但是应该跳过第一行使用%。请建议我如何在变量中逐个获取这些值,或者在文件中使用条件语句与85进行比较。

我使用 grep -E -o"。{0,2}%" test.txt ,但是它给%带有例如10%的值以及我不想要的se%。

由于

3 个答案:

答案 0 :(得分:1)

您可以使用awk

df -h | awk 'NR>1{print $5+0}'

或者使用文件:

awk 'NR>1{print $5+0}' test.txt

使用gnu grep

grep -oP '\d+(?=%)' test.txt

答案 1 :(得分:0)

使用perl:perl -ne'打印$ 1。 "" if /(\ d {1,2})\%/'的test.txt

答案 2 :(得分:0)

使用以下命令有助于获得所需的结果

cat text.txt | cut -d'%' -f1 | awk '{print $NF }'