文本查看和处理命令

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

以上是关于文本查看和处理命令的主要内容,如果未能解决你的问题,请参考以下文章

linux系统常用的文本查看及处理命令

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段

文本处理命令

在片段中重新加载android视图

Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段

Linux 入门记录:十七Linux 文本/文件处理命令