Linux系列之文字操作命令

語言: CN / TW / HK

前言

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

cat命令

顯示文字的最基本命令。

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

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

head命令

該命令將顯示檔案的前10行(預設情況下)。

head filename

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

head -20 passwd.lst

tail命令

該命令與 head 命令相反,將顯示檔案的最後10行(預設情況下)。

tail filename

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

tail -20 passwd.lst

nl命令

顯示帶有行號的檔案。

nl file

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

head -35 passwd.lst | nl

grep命令

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

cat file | grep keyword

它可以讓你過濾顯示檔案的內容。

cat passwd.list | grep output

結合前面的命令,讓我們檢視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 將顯示行數。

sed命令

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

s 是替換命令:

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

讓我們使用 sedsnort.conf 檔案中找到 mysl 的所有例項,並將其替換為 MySQL ,並將該檔案儲存為當前目錄中的 snorttest.conf

sed s/searchterm/replacementterm/occurence

這裡的 g 代表全域性,意味著替換髮生的所有例項。

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

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

我們假設我們有一個 textfile.txt 檔案:

gwyn gps
gwyn gps gps
gwyn gps gps gps

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

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

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

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

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

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

more命令

每次顯示檔案的一頁,並允許分頁。

more file
more snort.conf

less命令

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

less file

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

less snort.conf

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

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

總結

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