Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 从文本及其编号中检索特定字符。即92%。Unix_Shell_Unix_Server - Fatal编程技术网

Shell 从文本及其编号中检索特定字符。即92%。Unix

Shell 从文本及其编号中检索特定字符。即92%。Unix,shell,unix,server,Shell,Unix,Server,我使用下面的命令从unix服务器提取有关数据使用情况的数据信息 df -P /data >> /data/prod/schjobs/data_usage.txt 文本的输出如下所示: 'Filesystem 512-blocks Used Available Capacity Mounted on /dev/vg02/lv_sas_data_raid1 4271649954 3922870768 348779186 92% /data'

我使用下面的命令从unix服务器提取有关数据使用情况的数据信息

df -P /data >> /data/prod/schjobs/data_usage.txt
文本的输出如下所示:

'Filesystem             512-blocks  Used  Available Capacity Mounted on
/dev/vg02/lv_sas_data_raid1 4271649954 3922870768 348779186    92%     /data'
我想问的是如何检索
92%
编号,以便在之后进行比较,并可能发送通知邮件并删除一些文件夹以清除一些空间


您能帮忙吗?

您可以在下面这样的变量中获取值

TOTAL_OCCUPIED=$(echo 'Filesystem 512-blocks Used Available Capacity Mounted on /dev/vg02/lv_sas_data_raid1 4271649954 3922870768 348779186 92% /data' | awk '{print $12}')


您可以直接使用下面的命令获取值
92%

SPACE=$(df -P /data |tail -1 |awk '{print $5}')
echo $SPACE
同样,重定向的
.txt
文件也是如此:

SPACE=$(cat /data/prod/schjobs/data_usage.txt |tail -1 |awk '{print $5}')
echo $SPACE 
随后,您可以使用
if
条件来比较磁盘空间,发送邮件通知,然后通过删除最大的文件/目录来清理空间

编辑答案

要在不使用
%
的情况下获取值,只需将输出通过管道传输到
cut
命令,如下所示,然后使用该变量进行比较:

SPACE=$(df -P /data |tail -1 |awk '{print $5}' |cut -d '%' -f1)
echo $SPACE

请让我知道它是否有用。

到目前为止您尝试了什么?@PanagiotisIoannidis:您可以首先使用
tail
grep
data\u usage.txt
提取所需的行,然后(例如)
cut
提取字段。如果您确实知道data_usage.txt最多包含一个百分比,那么使用
grep-oE'[0-9]+%'
提取它就更容易了。您好,User123,谢谢您的回答,我刚刚关闭了括号,效果很好。然而,我认为我应该删除%以便进行比较。对的但是我应该把它转换成字符串吗?你能帮个忙吗?1)你可以让
awk
把东西当作数字来处理(而不是使用
cut
),所以试试这个
echo“abcd92%e”| awk'{print$5+0}
2)你可以让
awk
像这样使用最后一行(而不是使用
tail
)“3)如果您的装载点有空格,您的字段号可能不正确,因此您可以从右侧向后计数,而不是从左侧向前计数
df|awk'END{print$(NF-1)+0}
我们都在这里学习和分享!你的回答已经很好了,我已经投了票。
SPACE=$(df -P /data |tail -1 |awk '{print $5}' |cut -d '%' -f1)
echo $SPACE