awk、sed、xargs 、grep 脚本

awk 、 sed 、xargs 使用集合

grep -i proc server.log  #忽略大小写。在server.log 中查找proc


#获取主机IP 地址.

TOOL=bond0
HOST_IP=$(ifconfig $TOOL | awk -F " " 'NR==2{print $2}')
echo $HOST_IP >> awk.sh

#!/bin/bash
pid=`ps -ef | grep "/usr/sbin/chronyd" | grep -v grep |awk '{print $2}'`

HOST_IP=$(ifconfig bond0 | awk -F " " 'NR==2{print $2}')
echo "MY IP is xxx" | awk '{$4='$HOST_IP'; print $0}'


#grep -v grep  忽略grep本身

#赋值注意用反引号`` 。赋值等号前后没有空格
echo $pid
pkill -9 $pid

#ps grep awk kill 强制停止指定进程
ps -ef |grep "/usr/sbin/chronyd" | grep -v grep |awk '{printf "%s",$2}' |xargs kill -9

#查找IP 地址
ifconfig ens160 | awk -F " " 'NR==2{print $2}'


ifconfig bond0 | awk -F " " 'NR==2{print $2}'

wlanconfig ath20 list sta |awk -F  " " 'NR==2{print $4}'

#第二行的第四个字节

wlanconfig ath20 list sta |awk -F  " " 'NR==2' 
#NR:==2 第二行

sed 删除2~5行
sed '2,5d'
在第2行后添加
sed  '2a test'
在第2行前添加
sed '2i test'

#sort |uniq
awk '{print $3}' /var/log/messages|sort |uniq
#sort 排除。uniq 去重
echo -n
docker images |awk '{print $3}' |xargs docker rmi 

#在当前目录下查找匹配字符执行替换
grep -rl "172.16.60.43". | xargs sed -i 's/172.16.60.43/172.16.60.153/g'

docker  ps -q

[root@nbp-slaver ~]# docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                                                                NAMES
9ea6d2826dbb        jd/openresty:1.0.1       "/usr/bin/openresty …"   2 months ago        Up 3 weeks          0.0.0.0:8083->8083/tcp, 0.0.0.0:58080->58080/tcp, 80/tcp, 0.0.0.0:59093->59093/tcp   nb-cas
479b92f62e0c        ultra-spcm-env:3.0.1.8   "sh -c 'java -Djava.…"   2 months ago        Up 3 weeks          0.0.0.0:58856->58856/tcp                                                             ultra-spcm-env
3e8ed654088c        nsitd-pms:3.0.1.8        "sh -c 'java -Djava.…"   2 months ago        Up 2 weeks          0.0.0.0:58035->58035/tcp                                                             nsitd-pms
71d64ef75294        ultra-spcm-nbp:3.0.1.8   "sh -c 'java -Djava.…"   2 months ago        Up 2 weeks          0.0.0.0:8080->8080/tcp                                                               ultra-spcm-nbp
e5d7cc8f5f05        nsitd-ile:3.0.1.8        "sh -c 'java -Djava.…"   2 months ago        Up 3 weeks          0.0.0.0:58850->58850/tcp                                                             nsitd-ile
[root@nbp-slaver ~]# docker ps -q
9ea6d2826dbb
479b92f62e0c
3e8ed654088c
71d64ef75294


cat /etc/crontab                                                                                                         

ps |grep monitor | grep -v grep |awk '{printf "%s",$2}' |xargs kill -9
ps |grep smartbs | grep -v grep |awk '{printf "%s",$2}' |xargs kill -9

 sed -i "s/docker/test/g" test.sh  | grep -i test  test.sh 


ifconfig ens160 | awk -F "[ :]+" 'NR==2 {print $3}'

###第四个字符由其他替代,并输出
echo "my name is chris" | awk '{$4="chariot"; print $0}'


mysql找回密码
systemctl stop mysql
编辑my.cnf
[mysqld]
skip-grant-tables
systemctl start mysql
或者:
mysqld_safe --skip-grant-tables &


mysql 备份
mysqldump -uroot -p  test_db1 >/backup/test_db1_bak_$(date +%F).sql


vim fenku_bak.sh
#!/bin/bash
MYSQL_CMD=/usr/local/mysql/bin/mysqldump
MYSQL_USER=root
MYSQL_PWD=XXXXX
DATA='data +%F'
DBname= 'mysql -uroot -pXXXXX -e "show databases;" |sed '1,5d''
#for DBname in dbname...
for DBname in ${DBname}
do 
    ${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/backup/${DBname}_${DATA}.sql.gz
done

grep -r "192.168.0.36" *.txt
grep -r "192.168.0.36"
grep -r -i "192.168.0.36"
要查找目录下文件内容包含特定字符串,可以使用`grep`命令配合正则表达式和路径参数。以下是一些常用的方法:

查找当前目录及其子目录下所有包含指定字符串的文件:
使用命令 `grep -r "string" .`,其中 `"."` 表示当前目录,`"string"` 是要查找的字符串。1
查找特定类型的文件中的字符串:

如果只想查找所有txt文件中是否含有某个字符串,可以使用命令 `grep -r "string" *.txt`。
忽略大小写:

在查找时,如果想忽略大小写,可以在 `grep` 命令后加上 `-i` 选项,例如 `grep -r -i "string" .`。
查找特定类型的文件并排除某些文件类型:

如果只想查找.c和.h文件中是否包含特定字符串,可以使用命令 `grep --include=\*.{c,h} -rnw -e "string"`,并排除所有.o文件,可以使用命令 `grep --exclude=\*.o -rnw -e "string"`。2
排除指定路径和文件名:
如果不想查找指定的路径或文件名,可以使用命令 `grep --exclude-dir={dir1,dir2,*.dst} -rnw -e "string"`,其中 `{dir1,dir2,*.dst}` 是要排除的路径和文件名。
这些方法可以根据实际需要灵活组合使用。


grep --exclude=\*.log -rnw -e "192.168.0.36"


ls -lR 

grep -v -e '^$' /etc/sysctl.conf | grep -v "^#"  #grep -v 取反。不显示空行和注释内容


-a 显示所有文件及目录 
-A 不显示当前目录和父目录 
-d 显示目录自身的属性信息 
-i 显示文件的inode属性信息 
-l 显示文件的详细属性信息 
-m 以逗号为间隔符,水平显示文件信息 
-r 依据首字母将文件以相反次序显示 
-R 递归显示所有子文件 
-S 依据内容大小将文件排序显示 
-t 依据最后修改时间将文件排序显示 
-X 依据扩展名将文件排序显示 
--color 显示信息带有着色效果

######查找文件大小并排序。显示最大的10个文件。
find / -type f print0 | xargs -0 du -h | sort -rh | head -n 10


在Linux中,你可以使用find命令结合-newermt参数来查找更新日期在特定日期之后的文件,并使用ls命令结合-t参数来根据文件更新日期进行排序。

以下是一个例子,假设你想要找到并排序在最后24小时内更新的文件:

find /path/to/search -type f -newermt "24 hours ago" | xargs ls -lt
这个命令的解释如下:

find /path/to/search:在指定路径下查找文件。

-type f:仅查找文件,不包括目录。

-newermt "24 hours ago":只查找在最近24小时内更新的文件。

xargs ls -lt:对find命令找到的文件列表进行排序,-l代表长格式显示文件详细信息,-t根据修改时间进行排序。

如果你想要找到并排序在特定日期之后更新的文件,可以将"24 hours ago"替换为特定的日期,格式为"YYYY-MM-DD"。例如:

find /path/to/search -type f -newermt "2023-03-01" | xargs ls -lt
这将会找到并列出自2023年3月1日以来更新的所有文件,并按更新日期进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值