Liunx运维(三)-文件过滤及内容编辑处理
文档目录:
十六、dos2unix:将 DOS 格式文件转换成 UNIX 格式
--------------------------------------- 分割线:正文 --------------------------------------------------------
1、cat=concatenate
2、 cat > test.txt <<EOF - - - EOF #生成文本,结尾 EOF 必须顶格编写
3、 cat > test.txt <<-EOF - - - EOF #生成文本,结尾 EOF 不必顶格编写,但要 table 缩进(ctrl+v+i)
4、cat test.txt # 查看文件内容
5、cat -n test.txt #对文件内容按行编号
6、cat -b test.txt #对文件内容按行编号,且不对空行编号
7、cat -E test.txt #显示文件结尾隐藏的 $ 符号
8、cat -s test.txt #两行以上的空格,只会显示一行
9、cat test.txt test2.txt #连接并显示多个文件
1、tac -b test.txt #反向显示文件内容
1、more test3.txt #满屏显示文件内容,最后显示内容的百分比
=
2、more -20 test3.txt #定义显示的行数
3、more +10 -10 test3.txt #+10,从指定的行开始显示内容
4、ls /etc| more -5 #分页展示文件夹下的文件
1、less -N test3.txt #满屏显示并显示行号
2、ls /etc|less #分页查看目录下文件内容
3、less 与 more 交互式子命令及说明
v:进入 vi 编辑界面
q:退出 less/more
1、head test3.txt #默认显示前 10 行
2、head -3 test3.txt #显示文件的前 n 行
3、head -c 10 /etc/passwd #显示文件前 10 个字节
4、head -1 /etc/passwd /etc/gshadow #显示多个文件头部内容
1、tail /etc/passwd #默认显示尾部 10 行
2、tail -n 5 /etc/passwd #显示尾部 5 行
3、tail -5 /etc/passwd #显示尾部 5 行,简洁写法
4、tail -f /opt/tools/elasticsearch-7.10.1/logs/elasticsearch.log #实时监控文件变化
5、tail -F 123.txt #实时监控,文件不存在报错,但是会等待文件生成不退出命令
1、tailf /opt/tools/elasticsearch-7.10.1/logs/elasticsearch.log #默认跟踪 10 行命令
2、tailf -5 /opt/tools/elasticsearch-7.10.1/logs/elasticsearch.log #指定跟踪最后 n 行
1、cut -b 3 test4.txt #只输出第 3 个字符
2、cut -b 3-5,10 test4.txt #支持 - 的写法, 多个定位用逗号分割
3、cut -b -5 test4.txt #表示从第 1 个字符到第 5 个字符
4、cut -b 6- test4.txt #表示从第 6 个字符到尾部
5、cut -c 3-5 test4.txt #以字符分割,中文也显示正常
6、cut -d : -f 1 /etc/passwd #指定以:作为分割显示
1、split -l 27 test3.txt new_ #每 27 行进行分割一次,分割的文件以 new_ 开头
2、split -l 27 -a 3 test3.txt new_ #-a 指定后缀长度
3、split -l 27 -d test3.txt new_ #-d 使用数字后缀
1、paste test.txt test2.txt #按行合并,默认 table 分割
2、paste -d: test.txt test2.txt #指定分隔符合并
3、paste -s test.txt test2.txt #-s 将一列内容转为 1 行
1、sort testSort.txt #将文件内容转为 ASCII 码,从小到大进行排序
2、sort -r testSort.txt #倒序排序
3、sort -u #去除重复行
4、sort -t -k #指定列排序
1、join testj1.txt testj2.txt #直接合并 2 个文件,需要排序一致的
1、uniq testUniq.txt #去除重复行展示
2、uniq -c testUniq.txt #去除重复行并统计次数
3、sort testUniq.txt |uniq -c #去重排序
1、wc -l /etc/init.d/README #查看行数
2、wc -c /etc/init.d/README #查看字节数
3、wc -m /etc/init.d/README #查看字符数
4、wc -w /etc/init.d/README #查看单词数
5、wc -L /etc/init.d/README #查看最长行的长度
6、wc /etc/init.d/README #查看行数、单词数、字节数
背景:主要由于 windows 编辑的中文字符在 liunx 中会有乱码
iconv -f gb2312 -t utf-8 GB2312.txt #将源文件为 gb2313 的编码转换为 utf-8 格式
十六、dos2unix:将 dos 格式文件转换成 unix 格式
1、dos2unix:将 dos 格式文件转换成 unix 格式
2、unix2dos:将 unix 格式文件转换成 dos 格式
构造:test1、test2
diff 默认显示格式为三种:a-add,c-change,d-delete
1、diff test1 test2 #d/a 签字的数字是文本 1 的行号,字符后面的是文本 2 的行号,不容易识别
2、 diff -y test1 test2 #并排格式输出
3、 diff -y -W 20 test1 test2 #-W 指定宽度
4、diff -c test1 test2 #上下文格式输出
5、diff -u test1 test2 #统计格式输出
6、diff /etc/rc3.d/ /etc/rc6.d/ #比较两个目录
vimdiff test1 test2 #可视化比较,退出需要两次(:q)
1、echo {1..10} | rev #字符串反转
2、cat test3|rev #文本反转
1、tr '123' 'xyz' < test4 #替换 123
2、tr '[a-z]' '[A-Z]' < test4 #小写转大写
3.tr '[0-9]' '[a-j]' < test4 #将数字转字母
4、 tr -d 'mrwhite' < test4 #删除 mrwhite
5、tr -d '\n\t' < test4 #删除 换行符和制表符
6、echo 'iiiiammmmmmmrrwwhiiiitttee' | tr -s iamrwhite #删除连续字符
7、tr -c '0-9' '*' < test4 #取数字反 - 替换为 *
od -Ax -tcx /bin/ls|more #使用 od 命令查看内容
1、ls|tee ls.txt #将标准输出内容覆写到文件中
2、ls|tee -a ls.txt #将标准输出内容追加到文件中
1、普通模式
(1) G 或 (shift+g):将光标移动到文件的最后一行
(2) gg 或 (1G)(1gg):光标移动至文件的第一行
(3) 0:将光标位置移动到当前行开头
(4) $:将光标位置移动到当前行结尾
(5) n<Enter>:将光标从当前位置向下移动 n 行
(6) ngg 或 (nG):移动到文件的第 n 行,可配置:set nu 查看
(7) H:光标移动到当前窗口的最上方的那一行
(8) M:光标移动到当前窗口中间的那一行
(9) L:光标移动到当前窗口最下方的那一行
(10) /1.txt : 从光标位置开始,向下寻找同名的字符串,n:向下继续搜索 N:向上继续搜索
(11) ?1.txt : 从光标位置开始,向上寻找同名的字符串,n:向上继续搜索 N:向下继续搜索
(12) :g/1/s//a/g:将符合 1 的内容全部替换为 a,斜线为分隔符,可以用 @、# 等替换
(13) :%s/a/1/g:将符合 a 的内容全部替换为 1,斜线为分隔符,可以用 @、# 等替换
(14) :n1,n2s/1/a/gc:n1、n2 为数字,在第 n1 行和 n2 行之间寻找 1,用 a 替换
(15) yy:复制光标所在的当前行
(16) nyy:复制光标开始向下的共 n 行
(17) p/P:p 将已复制的数据粘贴到光标的下一行,P 则为粘贴到光标的上一行
(18) dd:删除光标所在的当前行
(19) ndd:删除从光标下开始 n 行
(20) u:回滚前一个执行过的动作
(21) . :重复前一个执行过的动作
(22) x:向后删除字符
(23) X:向前删除字符
(24) d1G:删除当前行至第一行
(25) dG:删除当前行至最后一行
(26) d0:删除当前光标文本至行首
(27) d$:删除当前光标文本至行尾
2、编辑模式
(1) i:在当前光标所在处插入
(2) a:在当前光标所在的下一个字符处插入文字
(3) I:在当前所在行行首第一个非空格字符处开始插入
(4) A:在当前所在行行尾的最后一个字符插入文字
(5) O:在当前行所在行的上一行处插入一行
(6) o:在当前行所在行的下一行处插入一行
(7) ESC :推出编辑模式,回到命令模式
3、命令模式
(1) :wq:退出并报错
(2) :wq!:退出并强制保存
(3) :q!:强制退出,不保存
(4) :n1,n2 w filename:将 n1 行到 n2 行的内容保存成 filename 这个文件
(5) :n1,n2 co n3:将 n1 行到 n2 行的内容复制到 n3 位置下
(6) :n1,n2 m n3:将 n1 行到 n2 行的内容剪贴到 n3 位置下
(7) !command:暂时离开 vi 到命令行模式下执行 command 命令显示结果
(8) :set nu:显示行号
(9) :set nonu:取消行号
(10) :vs filename:垂直分屏显示,同时显示当前文件和 filename 对应的文件的内容
(11) :sp filename:水平分屏显示,同时显示当前文件和 filename 对应的文件的内容
(12) I+#+ESC:(ctrl+v) 可视化模式下一次注释所选的所行,取消注释可用:n1,n2s/#/gc,# 替换为其他符号可换成别的操作
(13) Del:(ctrl+v) 可视化模式下,一次性删除所选内容
(14) r:(ctrl+v) 可视化模式下,一次性替换所选内容