三剑客:
sed:
sed 选项 内置命令 输入文件
选项:
-n 取消默认sed输出,常与内置命令p连用
-i直接修改文件,不输出到终端
-e允许多次编辑
-r支持扩展正则表达式
内置命令:
p 打印
sed -n ‘4p’ test.sh 取出第四行
sed -n ‘/test/p’ test.sh 取出含有test的行
d 删除
sed ‘2,4d’ test.sh 删除第2-4行
sed ‘/test/d’ test.sh 删除含有test的行
vimdiff 查看两个文件差异
diff 没有vimdiff清晰
sed -i.bak ‘/test/d’ test.sh 备份并删除文件中含有test的行
替换:
s替换
g全局
将文件中的test替换成admin
sed ‘s#test#admin#g’ test.sh # 理论上可以用任何东西替代
a 追加
在文本第二行后面增加一行并追加内容:
sed -i ‘2a hello world’ test.sh
在第二行插入 原来第二行移动到第三行
sed -i ‘2i hello world’ test.sh
练习:
取文件中5-15行重定向到test.txt
sed -n ‘5,15p’ /etc/passwd > /test.txt
远程连接ssh工具 需要一定配置修改: /etc/ssh/sshd_config
port 52113
PormitRootLogin no 禁止root远程登陆
GSSAPIAuthentication no 解决连接慢
UseDNS no 解决连接慢
awk:
awk 参数 ‘条件{动作}’ 文件
核心作用:取列 附加作用 查 删
参数:
-F 指定分隔符
变量名:
$n 当前记录的第n个列 字段间由FS 或 -F 指定分隔符
第一列用$1
整行用$0
最后一列 $NF NF本身记录的是列的个数
NR记录行
最后第二列 $(NF-1)
awk ‘{print $1}’ test.txt 打印
awk -F “:” ‘{print $1}’ test.txt
awk ‘{print NR==2} ‘ test.txt 打印第二行