Linux系列之文本操作命令

前言

Linux 有八個常用的文本操作命令:catheadtailnlgrepsedmoreless。本文介紹它們的區別和簡單用法。

cat命令

顯示文本的最基本命令。

cat file
cat /usr/share/metasploit-framework/data/wordlists/passwd.lst

image.png

cat命令不是最方便的命令,但卻十分快捷。

head命令

該命令將顯示文件的前10行(默認情況下)。

head filename

如果你想顯示指定的行數,請在head命令後使用-來指定。

head -20 passwd.lst

image.png

tail命令

該命令與head命令相反,將顯示文件的最後10行(默認情況下)。

tail filename

如果你想顯示指定的行數,請在tail命令後使用-來指定。

tail -20 passwd.lst

image.png

nl命令

顯示帶有行號的文件。

nl file

如果你用管道輸出到它,它使參考變得更容易。

head -35 passwd.lst | nl

image.png

grep命令

可能是使用最廣泛的文本處理命令。關於這個命令,有好幾本書。

cat file | grep keyword

它可以讓你過濾顯示文件的內容。

cat passwd.list | grep output

image.png

結合前面的命令,讓我們查看passwd.lst第20至50行中所有含有23的字詞。

head -50 passwd.lst | tail -30 | grep 23 | nl
  • head -50 passwd.lst 表示我們想要顯示前50行。
  • tail -30 表示想要從head命令得到的前50行里的最後30行,也就是20-50行。
  • grep 23 將只顯示包含23的行。
  • nl將顯示行數。

image.png

sed命令

這個命令可以讓你搜索出現的單詞或測試模式,然後對它執行一些操作。類似於Windows中的查找和替換。sed中的命令以單個字母開頭。

s是替換命令:

echo "gwyn" | sed 's/gwyn/gps'

image.png

讓我們使用sedsnort.conf文件中找到mysl的所有實例,並將其替換為MySQL,並將該文件保存為當前目錄中的snorttest.conf

sed s/searchterm/replacementterm/occurence

這裡的g代表全局,意味著替換髮生的所有實例。

sed s/mysql/MySQL/g /etc/snort/snort.conf > snorttest.conf

image.png

你可以通過在末尾使用/1/2等來指定你要替換的行的哪一次出現。

我們假設我們有一個textfile.txt文件:

gwyn gps
gwyn gps gps
gwyn gps gps gps

我們如何才能在每一行中只將第二次出現的gps替換為gwyneth

sed s/gps/gwyneth/2 textfile.txt > sample.txt

image.png

現在,如果我們想只在第三行中替換第二個出現的內容,該怎麼辦?我們可以在s命令的前面加上一個數字來表示。

sed 3s/gps/gwyneth/2 textfile.txt > sample2.txt

image.png

讓我們看看在snort.conf 中,mysql每次出現的地方:

image.png

並將第二行中出現的每一個mysql替換為dogs,並將其保存到sample2.txt

image.png

more命令

每次顯示文件的一頁,並允許分頁。

more file
more snort.conf

image.png

less命令

more命令類似,只不過更加實用。畢竟少即是多。

less file

如果你按下/鍵,less將允許你在文件中搜索術語。

less snort.conf

在這裡,我按下/鍵,並鍵入選項:

image.png

less帶我到第一個發生的地方,按n鍵是下一個。

image.png

總結

就這樣吧,我終於開始理解把這些命令連在一起的強大力量了。