Linux
01.系统维护
CPU
内存
drop_cache为什么有些不释放
swap交换分区
磁盘
lvm磁盘扩容
文件夹加密ecryptfs-utils
linux挂载ISCSI磁盘
创建lvm
fstab挂载文件系统
systemd.mount
存储故障
曲线为目录配置限额
lvm缩容
进程
如何找到某一个正在运行的进程?
CRIU进程快照
网络
TCP连接的10种状态
Ubuntu禁用ipv6
close_wait数量过多阻塞网络连接
IP地址与二进制转换
支持ACME的DNS服务器PowerDNS
系统
CentOS版本及对应默认内核版本
修改shell语言
系统启动流程
cgroup
CentOS7升级内核并开启BBR
配置内核参数优化linux
更新grub2默认启动的内核
CentOS-SCLo源
修改键盘映射
Debian12升级时内核编译错误
timesync(ntp)
内核
drop_caches
软件
更新openssl
GUI
Gnome Workspace Names
02.系统安全
Auditd审计服务配置
ssh登陆免公钥验证
恶意脚本处置
2023挖矿脚本m0nad
为ssh服务添加多因子认证
03.基本概念
Out Of Memory
70.QEMU
磁盘格式转换
80.LFS
90.常用脚本
使用except修改操作系统密码
init.d脚本模板
shell脚本判断参数数量
安装oh-my-zsh
systemd脚本模板
端口测试
适用于truenas的ipv6阿里云ddns脚本
更新nginx白名单
将文件改名为md5值
djvu转换为pdf并ocr
99.常用命令
man page中命令后的数字释义
tcpdump
nslookup
nc
rsync
awk
sed
echo
rm
tar
chage
auditctl
ausearch
ab
openssl
parted
find
date
firewall-cmd
sort
vmstat
nice-调整进程的优先级
top
taskset-进程绑定CPU核心
iptables
iostat
sysctl
tr
rpmbuild
转载nginx.spec含说明
安装使用rpmbuild
unpacked files found
grep
vimtutor
tlinux - tos
snmpwalk
chattr
本文档使用 MrDoc 发布
-
+
首页
sed
# sed ## sed删除第一列后打印 ```shell sed -e 's/[^ ]* //' file ``` ## sed替换关键字后所有字符串 假设需要迁移dns记录,但是导出的记录带有注释,而导入的设备不支持注释,需要将注释全部删除。 数据样本`mail IN TXT v=spf1 include:spf.mail.qq.com ~all;;无;;邮箱记录`可以看出注释有规律都是以两个`;;`开头,那么按照这个规律我们开始处理数据。 ```shell ➜ echo 'mail IN TXT v=spf1 include:spf.mail.qq.com ~all;;无;;邮箱记录' | sed 's/\;[^;]*//g' mail IN TXT v=spf1 include:spf.mail.qq.com ~all ``` 当然也可以使用cut来切割文本,不过TXT的DMARC记录中包含`;`,而cut的分隔符只能使用一个字符,bind重的注释使用`;;`开头超出了cut的能力范围,简单的使用一个`;`来切割可能会出现数据错误。 ## 打印第10到10行 ```shell sed -n '10,10p' file.txt ``` ## 打印第10行 ```shell sed -n '10p' file.txt ``` ## 打印两个关键字中间的所有行 - 假设nginx的access日志包含五月二十七日一整天的日志 - 现在需要查看凌晨十二点到凌晨一点的日志,所以第一个匹配项只写到了小时,第二个匹配项写到了分钟 - 参数`-n` ,`p` ```shell sed -n '/27\/May\/2021:00/,/27\/May\/2021:01:0/p' nginx.access.log ``` ## 与awk结合使用 - 结合[awk](https://blog.ihoiwan.com/project-2/doc-89/ "awk")打印某天(示例为:2021年6月4日)nginx access日志状态码非200的日志 ```shell sed '/04\/Jun\/2021/p' /home/wwwlogs/nginx.access.log |awk '{if ($9!=200) print $0}' ``` ## 每个单词的首字母大写 ``` echo "abc aBc ABC" | sed 's/\b\([[:alpha:]]\)\([[:alpha:]]*\)\b/\u\1\L\2/g' Abc Abc Abc ``` ## 替换全部换行符 sed在处理文本时有两个空间: - 存储空间:用来存储需要被处理的文本 - 模式空间:用来存储正在处理的文本,一般来说只存储一行 因为sed是按行处理文本的,并且会在行位自动添加换行符,所以需要将当前行与下一行合并为一行来处理文本,这时候需要在s前添加一个参数`N;`意义为将下一行添加到模式空间一同处理。 ``` sed 'label;N;s/\n//g;t label' ``` `label`是一个标识符,用来标记每一行的开头 `t`或`b`指的是执行完命令后跳转到标识符所在的位置 `t label`可以理解为每一行的开头位置,这样就可以达到删除所有换行符的效果,否则只会没两行处理一次 ## 在匹配行前后添加新行 最近部署apisix时需要添加ip白名单,就一行的事儿通过vim有点墨迹,所以通过sed来实现。 ``` # 关键字 a换成i就是在匹配行前添加,"\"后是要添加的行内容不以"/"或"\"结尾 sed -i '/allow_list:/a\ - ${your_ip}' /usr/local/apisix/dashboard/conf/conf.yaml ``` ## 替换ascii字符 查看`/proc/${pid}/cmdline`文件时,cat的时候不会显示空字符'\0',出来的是一串字符串,,vim又要进入交互模式再替换。比较简单的还原方式是用sed替换ascii字符,如下: ```shell [root@localhost 25025]# sed 's#\x00# #g' cmdline nc -l 9923 ```
zhangky
2022年12月9日 11:46
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码