查看文本
显示文本的前面10行,和后面10行
head -10 log.txt
tail -10 log.txt
也可以作为管道命令
cat log.txt | head -10
动态显示文本
tail -f log.txt
以不同的编码格式显示出来,如16进制
hexdump -e ’ [iterations]/[byte_count] “[format string]” ‘
注:hexdump的格式命令模式如下: iterations表示一行显示多少个,byte_count表示几个字节组合在一块,在format string要对应上字节的数目
例子如下:
hexdump -v -e '6/4 "0x%08x, "' -e '"\n"' log.txt | less
输出的每一行类似如下,6个一组, 每个4个字节 ,使用less可以动态查看
0x3d3d3d3d, 0x3d3d3d3d, 0x3d3d3d3d, 0x3d3d3d3d, 0x3d3d3d3d, 0x3d3d3d3d,
对比输出
hexdump -C log.txt
结果:
00002990 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |================|
注:后面这些等号即是前面这些字节的对比输出, 最前面有一个文件偏移量
另外可以将不显示字符以点代替输出对比
hexdump -e ‘16/1 “%02X ” ” | “’ -e ‘16/1 “%_p” “\n”’ log.txt
结果:
20 20 20 20 20 20 20 20 20 0A 3D 3D 3D 3D 3D 3D | .======
3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D | ================
具体hexdump使用和详情可参照下面两篇博客1,2
注:hexdump除了可以输出16进制,也可以输出2,8,10等其他进制
其他一些编码输出工具:
xxd
od
文本比较
常用diff命令
例子:
diff log2013.log log2014.log -y -W 50
2013-01 2013-01
2013-02 2013-02
2013-03 | 2014-03
2013-04 2013-04
2013-05 2013-05
2013-06 2013-06
2013-07 2013-07
2013-08 | 2013-07
2013-09 2013-09
2013-10 2013-10
> 2013-11
> 2013-12
说明:
“|”表示前后2个文件内容有不同
“<”表示后面文件比前面文件少了1行内容
“>”表示后面文件比前面文件多了1行内容
具体diff如何使用,请查看这篇文章
文本编辑
替换
直接用sed命令
sed -i "s/old/new/g" log.txt
有的时候在windows和linux中同时编辑过的文件会出现下面这个问题:
对于换行,window下用回车换行(0A0D)来表示,linux下是回车(0A)来表示。这样,将window上的文件拷到unix上用时,总会有个^M.
注:^V和^M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。
使用vi 进行替换 :%s/^M$//g
使用tr进行删除
cat filename | tr -d “^M” > newfile
使用sed 屏幕编辑模式
sed -e “s/^M//” filename > newfile
注:sed命令将单独给例子
合并用cat
cat text1.txt text2.txt text3.txt > newfile
合并去重复
去重复经常在字典中用到,比如说去破解wifi密码,有好几个字典,这时候可以把字典合并起来,然后干掉重复的。
将文件夹下面的文件全部合并去重复
cat * | sort | uniq > uniq.txt
提取重复,反向排序,去掉首字目包含空格的行
cat * | sort | uniq -d -c | sort -r | sed -e 's/^ *//' > dup.txt
不获取重复的
cat * | sort | uniq -u > uniq.txt
编写内容 vi
注:将单独写例子
查找文本
常用grep ,egrep
注:grep将单独写例子
查找log日志里面,有test后面跟空格的文本
cat log.txt | egrep 'test[ ]'
简单的查找 less命令来帮忙
进入less界面后,很多命令都与vi的命令类似
查找输入 /str_want_to_find
注:(区分大小写)
如果想去掉大小写区分:
先输入-i ,再输入斜杠进行查找
每找到一个可以按下n 跳到下一个