Linux系列之文本操作命令
- 2022 年 7 月 6 日
- 筆記
前言
Linux 有八個常用的文本操作命令:cat
、head
、tail
、nl
、grep
、sed
、more
、less
。本文介紹它們的區別和簡單用法。
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'
讓我們使用sed
在snort.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
鍵是下一個。
總結
就這樣吧,我終於開始理解把這些命令連在一起的強大力量了。