二、文本编辑工具
1>cat and less
文件内容查看
cat
可以查看文件内容
语法格式:
cat
【
options
】
path/filename
cat
的选项
-s
把文件中的多个连续的空白行压缩为一个
-A
(显示所有
数字代表字母或其它符号
)即原样输出
-n
用来显示行号
-E
每一行都以
$
符号结尾
cat
查看的文件应是以
ASCII
编写的,若查看二进制文件会出现乱码,在出现乱码后可以使用
reset
或者
tset
复位
less
文件导航
less
选项
path/filename
less
的选项有
space
向前翻阅一屏
b
向后翻阅一屏
Enter
向前一行
k
向后一行
g
快速到行首
G
快速到行尾
/text
搜索文件
n
重复上次搜索
N
重复上次搜索,但是反方向进行
q
退出
less
v
调用编辑器编辑文本,(默认为
vi
):
wq
退出到
less
下再按
q
退出
less
m
显示所占的比例
M
一共有多少行文件,现在在第几行
less
和
more
more
只能从前向后翻页,翻完退出。
less
既可以向前翻又可以向后翻。
文件摘录查看
head and tail
head
语法格式
head �Cn m filename m
为数字,表示显示前
m
行
例如
head �Cn 3 /etc/passwd
查看
/etc/passwd
文件中的前三行
也可以写为
head -3 /etc/passwd
二者效果相同。如果不加
-3
会把全文显示出来
tail
语法格式
tail
选项的选项有
-n
和
-f
-n
用来显示第几行
-f
即
follow
处于等待状态,如果此时有人向被查看的文件中写入或者追加东西,
内容也会显示出来。因此常用于动态查看日志
tail -n m filename m
为数字,表示显示最后
m
行
例如
tail �Cn 5 /etc/passwd
查看
/etc/passwd
文件中的最后
5
行
也可以写为
tail -5 /etc/passwd
如果想要只抽取一个文件中(
/var/log/message
)的第
五行可以使用
head -5 /var/log/message | tail -1
如果想要只抽取一个文件中
倒数第三行可以使用
tail -3 /var/log/message | head 1
grep
grep
语法格式
grep [options] “
模式
” /path/to/file
grep
选项
--color
显示匹配串的颜色
={auto|never|always}
-E ==egrep
-v
反向查找,只显示不匹配的行
-i
比较字符时忽略大小写的区别
-r
-o
只显示匹配的字符
-n
在匹配行前显示其在文件中的相对行号
-c
只显示匹配到的行的数目,而不显示行的内容
-Ax
搜索匹配行的前两行
-Bx
搜索匹配行的后两行
-Cx
搜索匹配行的前后各两行
例如:
搜索
/etc/passwd
中
用户
Shell
是
bash
并且家目录是
/home
的用户
grep “bash$” /etc/passwd | grep “/home”
其中
bash$
表示以
bash
结尾,
grep “/home”
表示包含
/home
|
则是管道
用来把前一个命令的输出作为后一个命令的输入
grep
的模式支持正则表达式
cut
字符分隔
cut [xuanxiang ] /path/to/somefile
cut �Cd: -f3 -d
指定分隔符
-f
显示字段
f3-5
显示第三道第五个字段
取
ip
ifconfig | grep ‘inet addr’ | cut �Cd: �Cf2 | cut �Cd’ ‘ �Cf1
或
ifconfig | grep �CE �Ccolor=auto “inet addr:([0-9]{1,3}\.){3}[0-9]{1,3}”
ifconfig | grep �CE -o “inet addr:([0-9]{1,3}\.){3}[0-9]{1,3}” | cut �Cd: -f2
在
access_log
日志文件中过滤
ip
grep �CE �Ccolor=auto “^ ([0-9]{1,3}\.){3}[0-9]{1,3}”
sed
流编辑器
按行匹配处理
sed
【
option
】
’pattern’ /path/to/somefiles
行编辑器
按行处理
模式‘
pattern
’要用单引号扩住
s/// , s@@@
分隔符
定值表达式
a b///
从
a
开始
道
b
结束
/ab/,/cd/s
从第一个出现
ab
的行开始
到第一个出现
cd
的行结束
i \
在搜索到的内容之前插入一个新行
a \
在搜索到的内容之后插入一个新行或多行
d
删除匹配到的行
g
取出暂存缓冲区的内容,将其复制到模式空间,覆盖该处原有内容
G
取出暂存缓冲区的内容,将其复制到模式空间,追加在原有内容后面
p
打印
会显示两次。加上
-n
可以只显示匹配到的内容
y///
替换,字符集匹配
y/ab/AB/ a-A b-B
s
替换,字符串匹配
s/ab/AB/ ab
替换为
AB
!
对所选行以外的所有行应用命令
r
从文件中读取打印行
q
结束或退出
sed
ifconfig | sed ‘/^eth0/,/^lo/s’
sed ‘s/[1-9][0-9]\{0,2\}\.’
查找
ifconfig
中
ip
地址并把它替换为主机名
sed ‘/^eth0/,/^lo/s/([0-
9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/www.a.com/’
sed.test
文件中添加
a b c d
交换
a b
与
c d
的位置
echo �Ce “a b\n c d” > sed.test
echo
的
-e
选项可以使换行符
\n
生效
否则
\n
会被原样输出
&
可以引用
/
前的整体
sed
‘
s/a/&&a/
’
sed.test
相当于用
aaa
替换
a