shell技巧

  • #grep -v "#" /etc/zabbix/zabbix_agentd.conf|grep -v "^$"     表明^$空格,-v表明不显示html

  • 获取脚本当前目录:BUILD_PATH=$(cd "$(dirname "$0")"; pwd)spa

pwd 是当前用户所在路径.net

好比Dev-FandeiMac:~ code-pc$ /tmp/t.sh 1 2code

$0:/tmp/t.shregexp

pwd:~htm

$(dirname "$0"):/tmpblog

  • 获取文本内容的第几行进程

wc -l  a.txt  统计a.txt 行数crontab

查看文件a.txt的第190行到196行,test

 

sed -n '190,196p' a.txt 

若是查看某一行用

 

sed -n '190,1p' a.txt 

 

sed -n 'a,bp' a.txt        读取自第a行到第b行的数据 
if(a > b ) return 第a行

  • 实现变量+1
    i=`expr $i + 1`

  • ret=$(cat /etc/ansible/hosts |awk  '{if($1=="'$1'"){print$1" "$2}}')

输出第一列符合某值的行的第一二列

其中"'$1'"表明外部变量,不是指第一列

  • a 追加内容 sed ‘/匹配词/a\要加入的内容’ example.file(将内容追加到匹配的目标行的下一行位置)


  • i 插入内容 sed ‘/匹配词/i\要加入的内容’ example.file 将内容插入到匹配的行目标的上一行位置)
    示例:
    #我要把文件的包含“chengyongxu.com”这个关键词的行前或行后加入一行,内容为“allow chengyongxu.cn”
    行前加

sed -i '/allow chengyongxu.com/i\allow chengyongxu.cn' the.conf.file 

 行先后

sed -i '/allow chengyongxu.com/a\allow chengyongxu.cn' the.conf.file

sed -i '/1/a\t' t.txt

在t.txt中找到一行内容为1,而后再改行后面写入t(mac不能用)

  • 在一行的两段添加内容

 

sed 's/$/&tail/g' test.txt  每行尾添加tail

 

sed 's/^/head&/g' test.txt 每行头添加head

 

 

  • 精确匹配一个进程

 

echo "[INFO LOG][`date +%y/%m/%d-%H:%M:%S`]:ps -efww |grep /data/C++/log|grep logd|grep -v start.sh|grep -v grep"

  • 显示匹配行的行号

 

sed -n '/sjob_exec.sh/=' /etc/crontab

 

显示匹配的行内容

sed -n '/sjob_exec.sh/p' /etc/crontab

 

修改指定行的内容

sed -i "row s/#//" /etc/crontab

 

修改匹配行

row=$(sed -n '/sjob_exec.sh/=' /etc/crontab)

sed -i "$row s/#//" /etc/crontab

 

 


 

参考连接:http://www.runoob.com/regexp/regexp-syntax.html

https://blog.csdn.net/ggz631047367/article/details/49508211









相关文章
相关标签/搜索