Linux三剑客
时间:2021-06-10 17:46:37
收藏:0
阅读:0
三剑客
sed 流编辑器
选项
sed -n 取消命令的默认输出
sed -i 修改文件内容 备份-i.bak
sed -e 允许多次编辑
sed -r 支持扩展正则表达式
sed -p 打印输出(与n配合)
sed -n ‘2,3p‘ 取文件2到3行
sed -n ‘3p‘ 第3行
sed -n ‘/old/p‘ 有old的行
删除内容
sed ‘/old/d‘ 删除有old的行
sed ‘2,4d‘ 删除2-4行
sed = 显示行号
修改文件并备份
cp oldboy.txt{,.ori}
sed -i.bak ‘/oldboy/d‘ oldboy.txt
修改动作:
操作前备份
操作后检查
vimdiff 查看2个文件差异,更直观
diff 查看2个文件差异
[替换] 重要!!!! 修改内容
s替换
g全局
sed ‘s###g‘ #号可以换成任意字符
sed ‘s#A#B#g‘ 把A换成B
sed -i.bak ‘s#A#B#g‘ 把A换成B并备份 bak是原文件
增加内容
a追加
sed -i ‘2a I am execllent‘
i插入
sed -i ‘2i I teacher linux,at 2i‘
插入两行 中间用\n
sed ‘2i yyyy\nxxxx‘
【sed显示行号,和内容在一行】
sed = /test.txt|sed ‘N;s/\n/ /‘
生产场景:配置ssh参数的案例
在文件中增加参数配置
=====================================================
远程连接ssh工具,需要一定配置
Port 52113 默认22端口
PermitRootLogin no 禁止root远程登录
GSSAPIAuthentication no 解决连接慢。
UseDNS no 解决连接慢。
=================================================
配置方法;
sed -i.bak ‘13i #=======\n#Port 52113\nPermitRootLogin yes\nGSSAPIAuthentication no\nUseDNS no\n#======‘ /etc/ssh/sshd_config
sed -n ‘13,18p‘ /etc/ssh/sshd_config
#=======
#Port 52113
PermitRootLogin no
GSSAPIAuthentication no
UseDNS no
#======
systemctl restart sshd
取出Linux中eth0网卡IP地址使用sed正则
[用一条sed命令来实现取IP]
后向引用:
想要的内容要用括号括起来匹配,因为好把他拿出来。() \1
ifconfig eth0 | sed -rn ‘2s#^.*inet (.*) net.*$#\1#gp‘
ifconfig eth0 |sed -nr ‘s#^.*inet (.*) n.*$#\1#gp‘
ifconfig eth0| awk ‘ NR==2 {print$2}‘
ifconfig eth0 | sed -n ‘2p‘| awk ‘{print $2}‘
ifconfig eth0 | head -n2 | grep inet | awk ‘{print$2}‘
ifconfig eth0 | head -n2 | awk ‘NR==2 {print $2}‘
hostname -I |awk ‘{print $1}‘
ip address | grep eth0 | awk ‘{print$2}‘
C6:ifconfig eth0 | awk -F "[ :]+" ‘NR==2{print $4}‘
hostname -I
hostname -I | cut -d " " -f1,1
取lo环回网卡
ip add | sed -rn ‘3s#^.*inet (.*)/8 s.*$#\1#gp‘
取stat /etc/hosts中的644数字权限
stat /etc/hosts |sed -rn ‘4s#^.*\(0(.*)/-.*$#\1#gp‘
显示行号
cat -n
less -N
vim :set nu
grep -n .
sed = |sed ‘N;s/\n/ /‘
awk ‘{print NR,$0}‘
awk-----------Linux三剑客老大
awk是一门编程语言,善于处理大量文件
1)取列 查 删
-F 指定分隔符 默认空格
awk -F ":" ‘{print $1,$NF,NF}‘ test.txt
$n 第n列
awk ‘{print $2}‘ a.txt
awk ‘{print $1,$2}‘ a.txt 多列
$0 当前整行记录
awk ‘{print $0}‘ a.txt
NF 当前记录中的列的个数,就是有多少列
$(NF-1) ——倒数第一列(倒数第二列)
awk ‘{print $NF}‘ a.txt 打印倒数第一列
awk ‘{print $(NF-1)}‘ a.txt 打印倒数第二列
NR 行
NR==3 ——指定取行
‘/ /‘ ——筛选行 $0整行
评论(0)