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日以来更新的所有文件,并按更新日期进行排序。