cat --查看文本內(nèi)容
語法:cat 文本文件名稱
選項:
長選項與短選項等價
-A, --show-all 等價于"-vET"組合選項。
-b, --number-nonblank 只對非空行編號,從1開始編號,覆蓋"-n"選項。
-e 等價于"-vE"組合選項。
-E, --show-ends 在每行的結(jié)尾顯示'$'字符。
-n, --number 對所有行編號,從1開始編號。
-s, --squeeze-blank 壓縮連續(xù)的空行到一行。
-t 等價于"-vT"組合選項。
-T, --show-tabs 使用"^I"表示TAB(制表符)。
-u POSIX兼容性選項,無意義。
-v, --show-nonprinting 使用"^"和"M-"符號顯示控制字符,
除了LFD(line feed,即換行符'\n')和TAB(制表符)。
--help 顯示幫助信息并退出。
--version 顯示版本信息并退出。
返回值 :
返回狀態(tài)為成功除非給出了非法選項或非法參數(shù)。
主要用途:
顯示文本內(nèi)容,如果沒有文本或文本為-則讀取標(biāo)準(zhǔn)輸入。
將多個文本的內(nèi)容進(jìn)行連接并打印到標(biāo)準(zhǔn)輸出。
顯示文本內(nèi)容中的不可見字符(控制字符、換行符、制表符等)。
補(bǔ)充說明:
查看目錄內(nèi)容:ls 文件名稱
head -n 文件名 ---- 查看文本文件的前幾行(n用數(shù)字代替)
tail -n 文件名 -----查看文本文件的最后幾行(n用數(shù)字代替)
head 文件名 ----默認(rèn)查看前10行
tail 文件名 ----默認(rèn)查看最后10行
less -N 文件名 -----逐行查看 (退出查看,q)
管道| 傳遞的作用 將前面一個選項的結(jié)果 傳遞給后面一個選項
案例:
1)查看/root/anaconda-ks.cfg文件內(nèi)容
cat -n /root/anaconda-ks.cfg
2)查看/etc/default/useradd文件內(nèi)容
cat -n /etc/default/userad
3)查看/etc/hosts文件內(nèi)容
cat -n /etc/hosts
4)顯示文件/root/anaconda-ks.cfg文件內(nèi)容的頭3行內(nèi)容
cat -n /root/anaconda-ks.cfg | head -3
5)顯示文件/root/anaconda-ks.cfg文件內(nèi)容的尾4行內(nèi)容
cat -n /root/anaconda-ks.cfg | tail -4
6)顯示文件/root/anaconda-ks.cfg文件內(nèi)容的頭12行內(nèi)容
cat -n /root/anaconda-ks.cfg | head -12
7)利用less分屏閱讀/root/anaconda-ks.cfgs文件內(nèi)容(退出q,顯示行號-N)
less -N /root/anaconda-ks.cfg
8)顯示文件/root/anaconda-ks.cfg文件內(nèi)容的查看第5行的內(nèi)容
cat -n /root/anaconda-ks.cfg | head -5 | tail -1
9)顯示文件/root/anaconda-ks.cfg文件內(nèi)容的查看第15到20行的內(nèi)容
cat -n /root/anaconda-ks.cfg | head -20 | tail -6
10)查看/etc/passwd全文內(nèi)容中包含bash的行分別在哪幾列
cat -n /etc/passwd | grep bash
grep --搜索工具 或者過濾
--global search regular expression(RE) and print out the line
語法:grep [選項]... 模式 [文件]...
選項:
<模式>可以包括多個模式字符串,使用換行符進(jìn)行分隔。
模式選擇與解釋:
-E, --extended-regexp <模式> 是擴(kuò)展正則表達(dá)式
-F, --fixed-strings <模式> 是字符串
-G, --basic-regexp <模式> 是基本正則表達(dá)式
-P, --perl-regexp <模式> 是 Perl 正則表達(dá)式
-e, --regexp=<模式> 用指定的<模式>字符串來進(jìn)行匹配操作
-f, --file=<文件> 從給定<文件>中取得<模式>
-i, --ignore-case 在模式和數(shù)據(jù)中忽略大小寫
--no-ignore-case 不要忽略大小寫(默認(rèn))
-w, --word-regexp 強(qiáng)制<模式>僅完全匹配字詞
-x, --line-regexp 強(qiáng)制<模式>僅完全匹配整行
-z, --null-data 數(shù)據(jù)行以一個 0 字節(jié)結(jié)束,而非換行符
雜項:
-s, --no-messages 不顯示錯誤信息
-v, --invert-match 選中不匹配的行
-V, --version 顯示版本信息并退出
--help 顯示此幫助并退出
輸出控制:
-m, --max-count=<次數(shù)> 得到給定<次數(shù)>次匹配后停止
-b, --byte-offset 輸出的同時打印字節(jié)偏移
-n, --line-number 輸出的同時打印行號
--line-buffered 每行輸出后刷新輸出緩沖區(qū)
-H, --with-filename 為輸出行打印文件名
-h, --no-filename 輸出時不顯示文件名前綴
--label=<標(biāo)簽> 將給定<標(biāo)簽>作為標(biāo)準(zhǔn)輸入文件名前綴
-o, --only-matching 只顯示行中非空匹配部分
-q, --quiet, --silent 不顯示所有常規(guī)輸出
--binary-files=TYPE 設(shè)定二進(jìn)制文件的 TYPE(類型);
TYPE 可以是 'binary'、'text' 或 'without-match'
-a, --text 等同于 --binary-files=text
-I 等同于 --binary-files=without-match
-d, --directories=ACTION 讀取目錄的方式;
ACTION 可以是`read', `recurse',或`skip'
-D, --devices=ACTION 讀取設(shè)備、先入先出隊列、套接字的方式;
ACTION 可以是`read'或`skip'
-r, --recursive 等同于--directories=recurse
-R, --dereference-recursive 同上,但遍歷所有符號鏈接
--include=GLOB 只查找匹配 GLOB(文件模式)的文件
--exclude=GLOB 跳過匹配 GLOB 的文件
--exclude-from=FILE 跳過所有匹配給定文件內(nèi)容中任意模式的文件
--exclude-dir=GLOB 跳過所有匹配 GLOB 的目錄
-L, --files-without-match 只打印沒有匹配上的<文件>的名稱
-l, --files-with-matches 只打印有匹配的<文件>的名稱
-c, --count 只打印每個<文件>中的匹配行數(shù)目
-T, --initial-tab 行首制表符對齊(如有必要)
-Z, --null 在<文件>名最后打印空字符
文件控制:
-B, --before-context=NUM 打印文本及其前面NUM 行
-A, --after-context=NUM 打印文本及其后面NUM 行
-C, --context=NUM 打印NUM 行輸出文本
-NUM same as --context=NUM
--group-separator=SEP print SEP on line between matches with context
--no-group-separator do not print separator for matches with context
--color[=WHEN],
--colour[=WHEN] use markers to highlight the matching strings;
WHEN is 'always', 'never', or 'auto'
-U, --binary do not strip CR characters at EOL (MSDOS/Windows)
規(guī)則表達(dá)式(沒必要硬背):
^ # 錨定行的開始 如:'^grep'匹配所有以grep開頭的行。
$ # 錨定行的結(jié)束 如:'grep$' 匹配所有以grep結(jié)尾的行。
. # 匹配一個非換行符的字符 如:'gr.p'匹配gr后接一個任意字符,然后是p。
* # 匹配零個或多個先前字符 如:'*grep'匹配所有一個或多個空格后緊跟grep的行。
.* # 一起用代表任意字符。
[] # 匹配一個指定范圍內(nèi)的字符,如'[Gg]rep'匹配Grep和grep。
[^] # 匹配一個不在指定范圍內(nèi)的字符,如:'[^A-Z]rep' 匹配不包含 A-Z 中的字母開頭,緊跟 rep 的行
\(..\) # 標(biāo)記匹配字符,如'\(love\)',love被標(biāo)記為1。
\< # 錨定單詞的開始,如:'\<grep'匹配包含以grep開頭的單詞的行。
\> # 錨定單詞的結(jié)束,如'grep\>'匹配包含以grep結(jié)尾的單詞的行。
x\{m\} # 重復(fù)字符x,m次,如:'0\{5\}'匹配包含5個o的行。
x\{m,\} # 重復(fù)字符x,至少m次,如:'o\{5,\}'匹配至少有5個o的行。
x\{m,n\} # 重復(fù)字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10個o的行。
\w # 匹配文字和數(shù)字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零個或多個文字或數(shù)字字符,然后是p。
\W # \w的反置形式,匹配一個或多個非單詞字符,如點號句號等。
\b # 單詞鎖定符,如: '\bgrep\b'只匹配grep。
普通案例:
grep home /etc/passwd 在全文查找包含有home的行
cat -n /etc/passwd | grep home 帶行號查詢包含有home的行
cat -n /etc/passwd | grep root 帶行號查詢包含有root的行
cat -n /etc/passwd | grep bash 帶行號查詢包含有bash的行
cat -n /etc/passwd | tail | grep bash 查看最后10行包含bash的行
grep---對應(yīng)技巧性用法
目的:輸出包含指定字符行
? 在文本文件內(nèi)容中,輸出包含關(guān)鍵字符串的行 – grep [選項] 關(guān)鍵字符串 文本文件...
? 常用命令選項
- -v:取反匹配
- -i:忽略大小寫
- ^word: 以字符串word開頭 (不要使用cat -n)
- word$: 以字符串word結(jié)尾
- ^$ 代表空行
-
在linux代表注釋行(不執(zhí)行)
案例:
grep -i ROOT /etc/passwd #忽略大小寫找/etc/passwd包含ROOT的行
cat -n /etc/passwd | grep root #帶行號顯示查詢含root的行
cat -n /etc/passwd | grep -v root #帶行號查找/etc/passwd顯示不包含root的行
cat -n /etc/default/useradd | grep -iv YEs 取反和忽略大小寫
grep ^# /etc/default/useradd 查看以#號開頭的行
grep -i ^shell /etc/default/useradd 忽視大小寫 查看以shell開頭的行
grep h$ /etc/default/useradd 查看以h結(jié)束的行
cat -n /etc/default/useradd | grep ^HOME 無結(jié)果(查以什么開頭,不可以與cat -n連用)
grep -v ^# /etc/default/useradd | grep ^$ 去除注釋行并顯示空行
grep -v ^# /etc/default/useradd | grep -v ^$ | cat -n 去除注釋行和去除空行并帶行號顯示剩余內(nèi)容
小總結(jié):
(1) grep ^word 文件名稱 以什么開頭(單個字母或者單詞)(cat -n 不可以在前面)
(2) grep word$ 文件名稱 以什么結(jié)尾(單個字母或者單詞)
(3) grep -v 文件名稱 取反
(4) grep -i 文件名稱 忽視大小寫
(5) ^$ 代表空行
(6) grep -v ^$ 文件名稱 去除空行
(7) grep -v ^# 文件名稱 去除注釋行
vim
語法:vim 文本文件
說明:Vim是交互式 一問一答
Vim :當(dāng)文本文件不存在,會自動創(chuàng)建文本文件,會打開,但是不會創(chuàng)建目錄;當(dāng)文本文件存在,會打開
選項:
Ctrl+u:向文件首翻半屏;
Ctrl+d:向文件尾翻半屏;
Ctrl+f:向文件尾翻一屏;
Ctrl+b:向文件首翻一屏;
Esc:從編輯模式切換到命令模式;
ZZ:命令模式下保存當(dāng)前文件所做的修改后退出vi;
:行號:光標(biāo)跳轉(zhuǎn)到指定行的行首;
:$:光標(biāo)跳轉(zhuǎn)到最后一行的行首;
x或X:刪除一個字符,x刪除光標(biāo)后的,而X刪除光標(biāo)前的;
D:刪除從當(dāng)前光標(biāo)到光標(biāo)所在行尾的全部字符;
dd:刪除光標(biāo)行正行內(nèi)容;
ndd:刪除當(dāng)前行及其后n-1行;
nyy:將當(dāng)前行及其下n行的內(nèi)容保存到寄存器?中,其中?為一個字母,n為一個數(shù)字;
p:粘貼文本操作,用于將緩存區(qū)的內(nèi)容粘貼到當(dāng)前光標(biāo)所在位置的下方;
P:粘貼文本操作,用于將緩存區(qū)的內(nèi)容粘貼到當(dāng)前光標(biāo)所在位置的上方;
/字符串:文本查找操作,用于從當(dāng)前光標(biāo)所在位置開始向文件尾部查找指定字符串的內(nèi)容,查找的字符串會被加亮顯示;
?字符串:文本查找操作,用于從當(dāng)前光標(biāo)所在位置開始向文件頭部查找指定字符串的內(nèi)容,查找的字符串會被加亮顯示;
a,bs/F/T:替換文本操作,用于在第a行到第b行之間,將F字符串換成T字符串。其中,“s/”表示進(jìn)行替換操作;
a:在當(dāng)前字符后添加文本;
A:在行末添加文本;
i:在當(dāng)前字符前插入文本;
I:在行首插入文本;
o:在當(dāng)前行后面插入一空行;
O:在當(dāng)前行前面插入一空行;
:wq:在命令模式下,執(zhí)行存盤退出操作;
:w:在命令模式下,執(zhí)行存盤操作;
:w?。涸诿钅J较?,執(zhí)行強(qiáng)制存盤操作;
:q:在命令模式下,執(zhí)行退出vi操作;
:q!:在命令模式下,執(zhí)行強(qiáng)制退出vi操作;
:e文件名:在命令模式下,打開并編輯指定名稱的文件;
:n:在命令模式下,如果同時打開多個文件,則繼續(xù)編輯下一個文件;
:f:在命令模式下,用于顯示當(dāng)前的文件名、光標(biāo)所在行的行號以及顯示比例;
:set number:在命令模式下,用于在最左端顯示行號;
:set nonumber:在命令模式下,用于在最左端不顯示行號;
注意:
- 不能新建父目錄、vim務(wù)必接文件名稱
- [root@localhost ~]# vim /a.txt
- 進(jìn)入命令行模式 字母:i a o 三選一
- 插入行模式 按esc退出插入,返回命令行 按鍵shift:
- 末行模式:第一--保存w;第二--保存并退出wq 第三--強(qiáng)行退出不* * 保存 q!
image.png
1.末行模式:
(1)設(shè)置行號 set nu
(2)取消行號 set nonu
(3)保存文件內(nèi)容w
(4)保存并退出 wq
(5)不保存強(qiáng)行退出q!
2.插入模式: 寫入內(nèi)容
(1)注意事項 可以寫中文,內(nèi)容寫完之后,務(wù)必恢復(fù)到英文
3.命令行切換到插入行:i a o
按字母i,輸入內(nèi)容在光標(biāo)的前面;
按字母a,輸入內(nèi)容在光標(biāo)的后面;
按字母o,另起一個行,輸入內(nèi)容;
4.命令行模式: 復(fù)制并粘貼 刪除 查詢內(nèi)容 查詢并替換 快速光標(biāo) 文檔撤銷
(1)快速移動光標(biāo) G(文件末尾) gg(文件行首) ngg(n用數(shù)字代替,例如10gg,含義光標(biāo)到第10行)
(2)文檔恢復(fù) 撤銷u 反撤銷 ctrl+r
(3)刪除文件內(nèi)容
1)命令行模式:刪除整行dd (刪除光標(biāo)所在行) ndd(n用數(shù)字代替,例如5dd,含義刪除5行,光標(biāo)所在行向下刪除)
2)命令行模式:刪除單個字母或者單個單詞 x 或者delete
3)插入行模式:或者進(jìn)入插入行,退格一個一個刪除
4)末行模式: 例如 1到5行(1,5d)
(4)復(fù)制并粘貼
1)命令行模式:復(fù)制yy(復(fù)制光標(biāo)當(dāng)前行) 復(fù)制多行nyy (光標(biāo)所在行,向下復(fù)制) 粘貼 p(會在光標(biāo)所在行的下一行新增一行粘貼內(nèi)容)
2)末行模式:例如 1到5行(1,5y) 粘貼 p(會在光標(biāo)所在行的下一行新增一行粘貼內(nèi)容)
(5)查詢內(nèi)容 /輸入想要查詢的內(nèi)容 n可以跳轉(zhuǎn)到下一個高亮的內(nèi)容(查找不存在的內(nèi)容可以消除高亮)
(6)查詢并替換 (末行模式下)
1)替換當(dāng)前行 :s/舊內(nèi)容/新內(nèi)容/g 例如:s/o/A/g
2)全文替換 :%s/舊內(nèi)容/新內(nèi)容/g 例如:%s/root/3c/g
3)局部替換 :10,20s/舊內(nèi)容/新內(nèi)容/g 例如:10,20s/bin/love/g
案例:
1)在vim中顯示行號,再取消行號,再顯示行號 set nu
2)切換到最后一行 G
3)切換到第30行 30gg
4)切換到第一行 gg
5)刪除第6行 :6,6d
6)刪除1-5行 :1,5d
7)查找全文的sbin字符串 /sbin
8)將全文的o替換成大寫的O :%s/o/O/g
9)去掉全文的#號 :%s/#//g
10)撤銷所有步驟,復(fù)制13行到18行 到文件的最后一行 u :13,18y G p
