Linux查看 cat grep echo vim用法

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)鍵字符串 文本文件...

? 常用命令選項

  1. -v:取反匹配
  2. -i:忽略大小寫
  3. ^word: 以字符串word開頭 (不要使用cat -n)
  4. word$: 以字符串word結(jié)尾
  5. ^$ 代表空行
  6. 在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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容