作為乙個以前沒怎麼接觸過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...