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
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!