linux命令回忆录之文本操作

查看文本

显示文本的前面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使用和详情可参照下面两篇博客12

注: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 跳到下一个

发布了68 篇原创文章 · 获赞 15 · 访问量 24万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章