文件过滤及编辑处理命令

1-cat 查看文件内容或合并文件。
常用功能:
1)cat file.txt 查看文件内容
2)cat file1.txt file2.txt >newfile.txt 合并成新文件(不算常用)
3)cat>>file.txt<<# 追加内容到文件结尾
just test cat function.
# (必须顶格写,结束要用Enter)
在工作中使用较多的。
4)cat /dev/null >file.txt 清空文件内容 (/dev/null 是空设备,>是输出重定向,把空的结果输入到file文件)
重要参数:
-n 对所有输出的内容按行编号。
-b 和-n功能相似,但是会忽略空白行。
2-tac 跟cat相反,反向显示文件内容。
工作中,一般是查看新建文件
[root@honey ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@honey ~]# tac /etc/passwd
wangc:x:503:503::/home/wangc:/bin/bash
mysql:x:502:502::/home/mysql:/bin/bash
nginx:x:501:501::/home/nginx:/sbin/nologin

3-more:分页显示文件内容。 (建议使用下面less命令)
格式:more 参数 文件
常用参数:
+num 从行号num开始显示。
-p 不滚屏,而是清除整个屏幕,然后显示文本。
常用more交互式子命令:
空格键 向下滚动一屏。
Enter 向下滚动一行。
b 返回上一屏。
= 输出当前行的行号。
/字符串 查找的字符串。
q 退出。

4-less 分页显示文件内容。(比more更强大好用)
常用参数:
-N 显示每行的行号。
-i 搜索时忽略大小写。
less命令的交互式子明令:
b 向前上一页。
空格键 向下翻一页。
/字符串 向下搜索字符串。
?字符串 向上搜索字符串。
n 向后查找下一个匹配的文本。
N 向前查找前一个匹配的文本。
Enter 向下滚动一行。
光标键的上下箭头 向上或向下滚动一行。

5-head 显示文件头部内容,默认是前10行。
常用参数:-n 指定显示的行数。
[root@honey ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

6-tail 显示文件尾部内容,默认是后10行,跟head相反。
常用参数: -n 指定显示的行数。
-f 实时输出并跟踪文件内容的变化。

7-tailf 跟踪日志文件。
工作中tailf主要跟踪日志文件,默认地输出日志文件的最后10行,然后实时地显示文件的增加内容。与tail -f不同的是,它在没有文件内容写入的时候,不会去访问磁盘文件,也不会更改文件的访问时间。
参数:-n 指定显示的行数。

8-cut 从文本中提取一段文字并输出。
常用参数:
-c 以字节为单位进行分割 命令: cut -c 3-8
-d 自定义分隔符,默认是以Tab为分隔符。
-f 与-d一起使用,指定显示那个区域。
-N 第N个字节,字符或字段。
N- 从第N个字节、字符或字段开始直至行尾。
N-M 从第N到第M(含第M)个字节、字符、字段。
-M 从第1到第M(含第M)个字节、字符、字段。
基础例子1:[root@honey ~]# echo weareafamily|cut -c 7-12
family
基础例子2:[root@honey ~]# echo weareafamily|cut -c -4,4-
weareafamily
基础例子2:
[root@honey ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@honey ~]# head -3 /etc/passwd|cut -d “:” -f 1 (-d : 指定:为分隔符,-f 1 指定分割的 第1列 )
root
bin
daemon

9-sort 文本排序
常用参数:
-n 依照数值的大小进行排序。
-r 倒序排序。
-t 指定分隔符。
-k 按指定区间排序。
-b 忽略每行开头存在的空格字符。
-u 去除重复行。
[root@honey test]# cat >>a.txt<<#

10.0.0.3
10.0.0.3
10.0.0.1
10.0.0.9
10.0.0.6
#
[root@honey test]# sort a.txt
10.0.0.1
10.0.0.3
10.0.0.3
10.0.0.6
10.0.0.9
[root@honey test]# sort -ur a.txt
10.0.0.9
10.0.0.6
10.0.0.3
10.0.0.1
[root@honey test]# cat >>a.txt<<#
10.0.1.2 F
10.0.2.3 G
10.0.0.4 F
10.0.2.9 S
10.0.0.5 A
#
[root@honey test]# sort -t ” ” -k2 a.txt
10.0.0.1
10.0.0.3
10.0.0.3
10.0.0.6
10.0.0.9
10.0.0.5 A
10.0.0.4 F
10.0.1.2 F
10.0.2.3 G
10.0.2.9 S
[root@honey test]# sort -ut ” ” -k2 a.txt 以第二 列排序去除重复行结果,注意混淆。
10.0.0.3
10.0.0.5 A
10.0.1.2 F
10.0.2.3 G
10.0.2.9 S

10-uniq 去除重复行
常用参数:-c 去除重复行,并计算每行出现的次数。
-d 只显示重复的行。
-u 只显示唯一的行。
[root@honey test]# sort a.txt |uniq -c
1 10.0.0.1
2 10.0.0.3
1 10.0.0.4 F
1 10.0.0.5 A
1 10.0.0.6
1 10.0.0.9
1 10.0.1.2 F
1 10.0.2.3 G
1 10.0.2.9 S
11-wc 统计文件的行数,单词数或字节数。
常用参数:-l 统计行数。
-m 统计字符数。
-L 打印最长行的长度。
-c 打印字节数。
[root@honey test]# wc -l a.txt
10 a.txt
[root@honey test]# echo 244dfjfsjlsgdsggsg >>a.txt
[root@honey test]# cat a.txt |wc -L
18

12-iconv 转换文件的编码格式。
常用参数:
-f A 从编码A转换。
-t B 转换成编码B。
-I 显示系统支持的编码。
-o 将输出输入到指定文件。
linux系统是UTF-8b编码;windows系统是GB2312编码,win编辑的中文字符到linux系统中会出现乱码,需要下面的转换后使用。
命令:iconv -f gb2312 -t utf-8 GB2312.txt

13-dos2unix 将DOS格式文件转换成UNIX格式。
在win下面编辑的脚本,传到linux上执行会出现不同错误,使用命令cat -A test_win.sh查看不*可见字符,会发现很多”\^m$”在结尾,win下面换行是”\r\n”,linux下面的换行“\n”,因此会出错。需要执行dos2unix test_win.sh。

14-diff 比较两个文件的不同,并输出文件的差异。
命令:diff file1.txt file2.txt
15-vimdiff 命令调用vim打开文件,并且以不同的颜色区分文件的差异。
vimdiff file1.txt file2.txt
退出需要执行两次:q。

16-tr 替换或删除字符。
[root@honey test]# cat a.txt |tr “[A-Z]” “[a-z]”
10.0.0.3
10.0.0.3
10.0.0.1
10.0.0.9
10.0.0.6
10.0.1.2 f
10.0.2.3 g
10.0.0.4 f
10.0.2.9 s
10.0.0.5 a

17-tee 多重定向
常用参数:-a 向文件追加内容,而不是覆盖。
[root@honey test]# ls
2018-08-23_yunwei_my1_beijing.jpg 2018-08-23_yunwei_my3_beijing.jpg 2018-08-23_yunwei_my5_beijing.jpg md5a.txt
2018-08-23_yunwei_my2_beijing.jpg 2018-08-23_yunwei_my4_beijing.jpg a.txt testA.txt
[root@honey test]# ls|tee -a ls.txt ls.txt 不需要先存在,自动创建。
2018-08-23_yunwei_my1_beijing.jpg
2018-08-23_yunwei_my2_beijing.jpg
2018-08-23_yunwei_my3_beijing.jpg
2018-08-23_yunwei_my4_beijing.jpg
2018-08-23_yunwei_my5_beijing.jpg
a.txt
md5a.txt
testA.txt

18-vim/vi 文本编辑器
vim三种模式:
1)普通模式:即打开文本(vim file.txt)的普通模式。这个模式下,不能输入编辑,可以进行删除、粘贴、复制等之类的工作。
2)编辑模式:按下“i、o、a、r、s”(及其对应的大写)进入,会看到–INSERT–这种提示,操作完成按Esc退到普通模式;
3)命令模式:在普通模式下面输入“:”,“/”, “?”时光标会自动定位在那一行,在这个模式下,可以执行保存、搜索、替换、显示行号等。

vim命令操作符:
普通模式下操作:
G 将光标移动到文件的最后一行。
gg 将光标移动到文件的第一行,等价于1gg或1G.
0 数字0 将光标从所在行的位置移动到当前行的开头。
$ 从光标所在的位置将光标移动到当前行的结尾。
n n为数字,为回车键,将光标向下移动n行。
ngg 移动到第n行。
/server 从光标位置向下搜索server字符串。
?server 从光标位置向上搜索server字符串。
n 配合/server 从光标位置 向下继续搜索。
N 配合/server从光标位置向上继续搜索。
:g/A/s//B/g 把符合A的内容都替换成B.
:%s/A/B/g 把符合A的内容都替换成B.
:n1,n2s/A/B/gc n1,n2为数字,在n1,n2行之间用B替换A。
yy 复制当前行。
nyy 从当前向下复制n行。
p 将已复制的粘贴在光标的下一行。
P 将已复制的粘贴在光标的上一行。
dd 删除光标所在的整行。
ndd 删除从光标开始向下n行。
u 撤销上一次的操作。
x 向后删除字符。
X 向前删除字符。
dG 删除当前行至最后一行。
d1G 删除当前行至第一行。

进入编辑模式常用命令:
i 在当前光标所在处插入文字。
o 在光标的下一行插入文字。
Esc 退出命令模式。

命令行模式:
:wq 保存修改并退出。
:wq! 强制保存后退出。
:q! 不保存强制退出。
:set nu 显示行号。

posted @ 2020-06-07 21:22  edda_huang  阅读(310)  评论(0编辑  收藏  举报