sed命令
-
动作说明
符号 意义 示例 a 新增 #在testfile文件的第四行后添加一行,并将结果输出到标准输出 sed -e 4a\newLine testfile
c 取代 #将第2-5行的内容取代成为『No 2-5 number』呢? nl /etc/passwd | sed '2,5c No 2-5 number'
d 删除 #删除/etc/passwd所有包含root的行,其他行输出 nl /etc/passwd | sed '/root/d'
i 插入 … p 打印 显示/etc/passwd 文件内的第 5-7 行 nl /etc/passwd | sed -n '5,7p'
s 取代 sed 's/要被取代的字串/新的字串/g’
删除eth0下包含inet字符串的inet显示/sbin/ifconfig eth0 | grep 'inet' | sed 's/inet//g'
-
直接修改文件内容(危险动作) (参数-i)
sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!#将 regular_express.txt 内每一行结尾若为 . 则换成 ! sed -i 's/\.$/\!/g' regular_express.txt #利用 sed 直接在 regular_express.txt 最后一行加入 # This is a test: sed -i '$a # This is a test' regular_express.txt
awk命令
对输出值按列操作,以下是例子
- 分析日志
# 查看访问网站最多的两个ip地址 awk '{print $1}' /data/logs/work.log|sort|uniq -c|sort -nr| head -2 # 查看访问网站最少的两个ip地址 (uniq是去除连续出现的重复值,所以之前要用sort排序) awk '{print $1}' /data/logs/work.log|sort|uniq -c|sort -nr| tail -2
- 处理结果
ls -l |awk '{print $9}' | xargs wc -l # 查看每一个文件的行数
xargs命令
- 批量杀死包含“bin/php”的进程
ps -ef | grep bin/php | grep -v grep |awk '{print $2}' | xargs kill -15