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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章