linux幾種常見的檔案內容查詢和替換命令

2021-09-11 23:25:25 字數 1739 閱讀 7341

作為乙個以前沒怎麼接觸過linux的小白,開始使用linux,各種不習慣,這周遇到乙個檔案內容測查詢和替換的需求。學習了以下幾種實現方式:

1、vi命令下的查詢和替換

1.1 vi下的查詢

/pattern :向下查詢pattern匹配字串

?pattern:向上查詢pattern匹配字串

使用了查詢命令之後,使用如下兩個鍵快速查詢:

n:按照同一方向繼續查詢

n:按照反方向查詢

pattern是需要匹配的字串,例如:

/name #查詢name

/name #查詢name單詞(注意前後的空格)

除此之外,pattern還可以使用一些特殊字元,包括(/、^、katex parse error: expected 'eof', got '#' at position 53: …name#̲查詢以name開始的行 /na… #查詢以name結束的行

//^name #查詢^name字串

1.2 vi下的替換

?/name/title/ #替換當前行第乙個 name 為 title

?/name/title/g #替換當前行所有 name 為 title

:n,katex parse error: expected 'eof', got '#' at position 19: …ame/title/ #̲替換第 n 行開始到最後一行中…s/name/title/g #替換第 n 行開始到最後一行中每一行所有 name 為 title

#(n 為數字,若 n 為 .,表示從當前行開始到最後一行)

:%s/name/title/ #(等同於 :g/name/s//title/) 替換每一行的第乙個 name 為 title

:%s/name/title/g #(等同於 :g/name/s//title/g) 替換每一行中所有 name 為 title

可以使用 #或+ 作為分隔符,此時中間出現的 / 不會作為分隔符

?#name/#title/# 替換當前行第乙個 name/ 為 title/

:%s+/oradata/apras/+/user01/apras1+ (

使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/

2.sed和grep配合

命令:sed -i s/yyyy/***x/ggrep yyyy -rl --include="*.txt" ./

作用:將當前目錄(包括子目錄)中所有txt檔案中的yyyy字串替換為***x字串。其中,

-i 表示操作的是檔案,``括起來的grep命令,表示將grep命令的的結果作為操作檔案。

s/yyyy/***x/表示查詢yyyy並替換為***x,後面跟g表示一行中有多個yyyy的時候,都替換,而不是僅替換第乙個

另外,如果不需要查詢子目錄,僅需要在當前目錄替換,用sed命令就行了,命令如下:sed -i s/***x/yyyy/g ./*.txt

3.find命令查詢和替換

命令格式:find -name 『要查詢的檔名』 | xargs perl -pi -e 『s|被替換的字串|替換後的字串|g』

#查詢替換當前目錄下包含字串並進行替換

find -name 『*.txt』 | xargs perl -pi -e 『s|智慧型鄉村|北部山區|g』

#遞迴查詢替換

find . -type f -name 『*.html』 | xargs perl -pi -e 『s|智慧型鄉村|北部山區|g』

Linux檢視檔案內容的幾種方式

cat etc sysconfig network n按q鍵 退出more命令 數字 指定每屏顯示的行數 d 顯示 press space to continue,q to quit.和 press h for instructions c 不進行滾屏操作。每次重新整理這個螢幕 s 將多個空行壓縮成...

幾種常見的ELF檔案

在linux下,我們經gcc編譯之後生成的可執行檔案屬於elf檔案 elf是一類檔案型別,而不是特指某一字尾的檔案。elf executable and linkable format,可執行與可鏈結格式 檔案格式,在linux下主要有如下三種檔案 elf格式可結構大致為 elf檔案由4部分組成,分...

Linux向檔案新增內容的幾種方法

例如,要想test.txt檔案新增內容 i am a boy test.txt在當前目錄中 開啟終端,輸入vi test.txt 回車,按a或i進入編輯模式,輸入 i am a boy,然後按esc鍵退出編輯模式,輸入 wq儲存並退出。方法二 echo命令法 開啟終端,輸入echo i am a b...