在linux命令行中,怎么样从一行字符中输出指定格式的字符串

在linux命令行中,怎么样从一行字符中输出指定格式的字符串,第1张

command | sed 's#.*\([0-9][0-9]:[0-9][0-9]\).*#\1'

# command是你那条输出的命令,将结果用管道传递给sed,匹配 nn:nn 这样的格式

so easy

我记得很久以前还在红联混得时候我写过一个菜单的脚本,就是你这种功能的要求。

我当时是这么干的:

有个printf 这个和C语言里的printf函数的格式符都一样,所以可以用C里面的 \r 或者 \b 来搞

\r光标移到行首

\b 退格

===这两个用哪个都可以,我当时用的是 \r

printf("第一句")

printf("\r") 回到行首

printf("\r")无数个空格后回到行首

printf("第二句")

当然 ,那两个可以合并 printf("\r \r")

比较是什么意思?是比较是否相同,对吧

变量a怎么会有很多行呢,如果是文件中很多行还好理解,我假设你是个文件吧,比如是a.txt

并且每行中没有空格才行。你要比较的值是100,假如是100哈,其它字符串也可以。

我先写了一个shell,你说清楚了再改。

#!/bin/bash

###################################

#author Zhao Yanan

#date 2013/03/22

#function String comparison

###################################

############# ENV #######################################

export LANG=C

export LC_ALL=C

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

############# DO #######################################

for a in `cat a.txt`

do

if [ "$a" == "100" ]then

echo $a

fi

done

a赋值改为

a=`df -h | awk '{print $5}' | grep -v 'Use%'`

你不能把use%也带变量中去吧

echo $a实际上只有一行了,所以我的脚本可以改为:

#!/bin/bash

###################################

#author Zhao Yanan

#date 2013/03/22

#function String comparison

###################################

############# ENV #######################################

export LANG=C

export LC_ALL=C

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

############# DO #######################################

function mailto() {

# mail

/usr/sbin/sendmail -t <<EOF

From: $mailfromadd

To: $mailtoadd

Cc: $mailccadd

Subject: disk

----------------------------------

disk!

----------------------------------

EOF

}

a=`df -h | awk '{print $5}' | grep -v 'Use%'`

for i in $a

do

if [ "$i" -ge "60" ]then

mailto

else

echo $i

fi

done

其中mailto你要写入程序放前面,我帮你写上了,注意邮件地址变量替换

哦,我忘记百分号的处理了,你再按你的方法修改下好了


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8953574.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-23
下一篇2023-04-23

发表评论

登录后才能评论

评论列表(0条)

    保存