文本查看和处理命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本查看和处理命令相关的知识,希望对你有一定的参考价值。
文本查看命令:hexdump,od,cat,tac,head,tail,more,less
文本处理命令:tr,cut,wc,sort,uniq,rev,colrm,paste,diff,path
文本查看命令
hexdump
查看文件,并以ASCII码或者十六进制(hexadecimal),十进制(decimal),八进制(octal)显示
hexdump [options] file... -b 单字节八进制显示 -c 单字节字符显示 -C 输出规范的十六进制和ASCII码 -d 两字节十进制显示 -o 两字节八进制显示 -x 两字节十六进制显示 -e 指定格式字符串 -n 只格式化输入文件的前几个字节 -s 从偏移量开始输出
执行命令#more ab ab ab ab 12 执行命令#hexdump -b ab 0000000 141 142 040 141 142 012 141 142 012 061 062 012 000000c 执行命令#hexdump -c ab 0000000 a b a b \n a b \n 1 2 \n 000000c 执行命令#hexdump -C ab 00000000 61 62 20 61 62 0a 61 62 0a 31 32 0a |ab ab.ab.12.| 0000000c 执行命令#hexdump -o ab 0000000 061141 060440 005142 061141 030412 005062 000000c
od
用于输出文件的八进制、十六进制或其它格式编码的字节
#od -c ab 0000000 a b a b \n a b \n 1 2 \n 0000014
cat
cat OPTION... [FILE]... -n 显示行号,包含空行 -b 显示非空行号,即空行跳过不显示行号 -s 连续的空行显示为一个空行 -A 显示所有控制符 -E 显示行结束符$
cat > f1
type something
ctrl+d 结束后内容会保存到f1,类似于简单的文本编辑工具
cat f1 f2 > f3 //将文件f1和f2的内容合并到f3
随机生成20位口令:
cat /dev/urandom | tr -dc ‘0-9a-zA-Z‘ |head -c20
tac
功能同cat,倒序显示,即末尾行显示为第一行,首行显示为最后一行
head
查看文本前几行
-c 指定查看前#个字节,一个汉字是三个字节
-n 指定查看前#行,n可以省略
-v 显示文件名的头信息
-q 不显示文件名的头信息
tail
查看文本后几行
-c 指定查看后#个字节 -n 指定查看后#行,n可以省略 -f 跟踪显示文件新追加的内容,常用于日志监控 -v 显示文件名的头信息 -q 不显示文件名的头信息 ls /etc/ | head -3 //显示ls列出的前3个文件或目录 head -5 a.log tail -0 -f m.log 只查看追加的新内容 tail -n0 -f /var/log/messages & who|head -1 显示命令结果的第一行 cat -n m.log |head -1000|tail -1 查看结果的第1000行 ifconfig eth0|head -2|tail -1 查看eth0的第二行IP地址行
more
分页查看文件,空格翻页,b键向上翻页,q键退出
-d 显示翻页及退出提示
less
分页查看文件或stdin输出,允许用户前后翻页,less命令是man命令使用的分页查看工具
/ 搜索; n下一个; N上一个
文本处理命令
tr
转义压缩字符
tr [OPTION]... SET1 [SET2] -d 删除指定字符 -s 压缩重复字符并转换为对应位的指定字符
tr ‘abc‘ ‘xyz‘ //将所有abc字符替换为xyz 输入aaaaabbbccceedddfff回车,查看效果 tr ‘abcd‘ ‘xyz‘ tr ‘a-z‘ ‘A-Z‘ //小写转大写 tr ‘1-9‘ ‘A-I‘ //数字转字母 tr -d ‘a-d‘ 删除包含‘a-d‘的所有字符 tr ‘a-z‘ ‘A-Z‘ < /etc/issue > f1 tr命令不会改变源文件的内容 tr -s 把连续重复的字符以单独一个字符表示 #more ab aaaaaaaaaabbbbbbbbbccccccc #more ab | tr -s ‘abc‘ ‘jkl‘ jkl tr -t 将第一个字符集对应的字符转化成第二个字符集对应的字符,位数对应 #more ab | tr -t ‘abc‘ ‘jkl‘ jjjjjjjjjjkkkkkkkkklllllll #more ab | tr -t ‘abc‘ ‘jk‘ jjjjjjjjjjkkkkkkkkkccccccc #cat f1 aaa bbb ccc aeeg #hexdump f1 #hexdump -c f1 tr ‘\n‘ ‘ ‘ < f1 //将换行符转换为空格显示 tr ‘\n‘ ‘\v‘ < f1 //将换行符转换为阶梯式显示 tr ‘\n‘ ‘\t‘ < f1 //将换行符转换为tab键显示 tr ‘[ac]‘ ‘8‘ < f1 //将ac字符转换为8 cat > f1 单行重定向,回车之后才会提交保存到文件,按Ctrl+d离开 使用 < 来从定向标准输入 cat > f2 < f1 复制f1内容到f2 cat > f1 << eof 多行重定向,定义终止词,自定义,这里定义为eof aaa bbb cc eof //最后一行必须以eof结束,且不能加空格
cut
按列提取文本
-d 指定分隔符,默认为tab -f 指定列数,可以为 # 或 #,# 或 #-# 。 #:表示第#个字段; #,#[,#]:表示离散的多个字段,例如-f 1,3,6; #-#:连续的多个字段,例如-f 1-6;还可以混合使用:-f 1-3,7。 -c 按字符切割; --output-delimiter=string:指定输出分隔符
more passwd |cut -d: -f1,3,4 more passwd |cut -d: -f1-5 more passwd |cut -d: -f1-3,7 more passwd |cut -d: -f1-3,7 --output-delimiter=, df |cut -c44-46 //centos6.8 df |cut -c39-42 //centos7.3 df| tr -s " "|cut -d" " -f5|tr -dc "[:digit:]\n" df|tr -s " " "%"|cut -d% -f5 cut -d: -f1 /etc/passwd cat /etc/passwd|cut -d: -f7 cut -c2-5 /usr/share/dict/words |more 截取IP: centos6:ifconfig eth0 | head -2|tail -1|cut -d: -f2| cut -d" " -f1 centos7:ifconfig ens33|head -2|tail -1|cut -dt -f2|cut -d" " -f2 ifconfig ens33|head -2|tail -1|tr -s " "|cut -d" " -f3
wc
文本数据统计wc=word count
wc f1
行数 单词数 字符数 文件名
-l 行数 -w 单词数 -c 字节数 -m 字符数 wc -l /usr/share/dict/linux.words 479828 /usr/share/dict/linux.words (2017年6月3日centos7.3)
sort
文本排序
把整理过的文本显示在stdout,默认按照字母排序,不改变原始文件
-b 忽略行首的空格字符 -d 排序时,只处理英文字母,数字和空格字符,忽略其他字符 -f 忽略大小写字母 -n 按数值大小排序 -o 将排序后的结果保存到指定文件 -r 反向排序 -h 按可视化大小 -t 指定字段分隔符 -k 按指定分隔符的某一列来排序,能够使用多次 -u unique,删除输出中的重复行 sort -t: -k3 -n passwd cut -d: -f1,3 passwd|sort -t: -k2 -nr df|tr -s " " "%"|cut -d% -f5 |sort -n | tail -1 //提取分区利用率最大值 df -i|tr -s " " "%"|cut -d% -f5 |sort -n | tail -1 //-i显示inode利用率
uniq
从输入中删除前后相接的重复行,重复指连续且完全相同
-c 显示每行重复出现的次数 -d 仅显示重复过的行 -u 仅显示不曾重复过的行 cut -d"" -f 1 /var/log/httpd/access_log |sort|uniq -c|sort -nr last|cut -d" " -f1|sort |uniq -c netstat -nt | tr -s " " |cut -d" " -f5|cut -d: -f1|uniq -c stat -c %a /tmp 取出目录的权限值 #stat /tmp | head -n4|tail -n1|cut -d "/" -f1| cut -d "(" -f2 //同上 1777
rev
反转显示,即镜像显示,每一行的首尾对调
colrm
删除指定字符列
colrm 3 删除第3列字符 colrm 2 5 删除第2列到第5列的字符 #more ab 123456 123 456 12aa34567 aa bb cc #more ab | colrm 3 12 12 12 aa #more ab | colrm 3 5 126 1256 124567 aa cc
paste
合并文件显示,默认按每行合并,不改变文件内容
-d 指定合并分隔符,默认为tab -s 所有行合成一行显示 paste [email protected] f1 f2 paste -s f1 f2
diff
比较两个文件的区别
-u 输出统一diff格式的文件,用于打补丁
#diff foo.conf-broken foo.conf-works 5c5 注明第5行有区别 < aa 不一样的内容 --- > aaa diff /etc/passwd /etc/passwd.bak
path
复制对文件的改变,打补丁(谨慎使用)
-b 自动备份改变了的文件
#diff -u foo.conf-broken foo.conf-works > foo.path #path -b foo.conf-broken foo.patch
本文出自 “rackie” 博客,请务必保留此出处http://rackie386.blog.51cto.com/11279229/1931973
以上是关于文本查看和处理命令的主要内容,如果未能解决你的问题,请参考以下文章
Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段
Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段