可以這樣做:
方法1:sed -i 's/被替換的內容/要替換成的內容/' file
方法2:sed 's/被替換的內容/要替換成的內容/g' file > file.out;mv file.out file。
(1)linux替換文件內容grep擴展閱讀:
Shell編程的常用技巧:
一、自動補齊:在linux中對於命令或路徑,可以TAB鍵進行自動補全,以下事項需要注意:
1、只存在一個該輸入字元開頭的命令或路徑,此時自動補全;
2、存在多個該輸入字元開頭的命令或路徑,此時第一次點擊TAB鍵無效,此時再次點擊TAB會羅列出所有該字元開頭的命令或路徑,繼續輸入直到僅僅剩一個時自動補全;
3、如果命令已經是完整的,TAB鍵則是本來的移動功能;而路徑的話要看命令自身的行為決定後續動作。
二、歷史命令
1、history命令可以顯示歷史執行過的命令;
2、使用!+序號執行該序號對應的命令;
3、使用!+字元執行該字元開頭的最後一次執行的指令。
三、命令別名
1、實現別名:alias ddd="df -Th";
2、刪除別名:unalias ddd;
3、顯示所有別名命令列表:alias;
4、存放位置:~/.bashrc (加入該文件後,重啟後不會消失)。
四、重定向
1、重定向標准輸入:< 命令接收輸入的途徑由鍵盤改為文件;
2、重定向標准輸出:> 將命令的執行結果輸出到指定文件,而不是直接顯示到屏幕;
3、重定向標准輸出:>> 將命令的執行結果追加輸出到指定文件;
4、重定向標准錯誤:2> 清除指定文件的內容,並把標准錯誤信息保存到指定文件;
5、重定向標准錯誤:2>> 標准錯誤信息追加到指定文件;
6、重定向標准輸出和標准錯誤:&> 將標准輸出、標准錯誤信息全部保存到指定文件,而不是直接顯示在屏幕上。
❷ Linux 命令 grep (文檔編輯)-想玩轉linux就請一直看下去
Linux 命令大全
Linux grep 命令用於查找文件里符合條件的字元串。
grep 指令用於查找內容包含指定的範本樣式的文件,如果發現某文件的內容符合所指定的範本樣式,預設 grep 指令會把含有範本樣式的那一列顯示出來。若不指定任何文件名稱,或是所給予的文件名為 - ,則 grep 指令會從標准輸入設備讀取數據。
參數 :
Linux 命令大全
1、在當前目錄中,查找後綴有 file 字樣的文件中包含 test 字元串的文件,並列印出該字元串的行。此時,可以使用如下命令:
結果如下所示:
2、以遞歸的方式查找符合條件的文件。例如,查找指定目錄/etc/acpi 及其子目錄(如果存在子目錄的話)下所有文件中包含字元串"update"的文件,並列印出該字元串所在行的內容,使用的命令為:
輸出結果如下:
3、反向查找。前面各個例子是查找並列印出符合條件的行,通過"-v"參數可以列印出不符合條件行的內容。
查找文件名中包含 test 的文件中不包含test 的行,此時,使用的命令為:
結果如下所示:
❸ linux下批量查詢文件內容字元串並替換
查找批量替換文件時,去除某種類型的文件,下面表示在./salt/*下的所有文件中,不包括tar.gz結尾的文件,搜索包含有node01字元串的文件
grep "node01" -rl ./salt/* --exclude=*.tar.gz
其實這里的 -r表示遞歸,-l表示輸出文件名,
也可以將 -rl替換為-rn,-n表示是哪一行,會輸出行號詳細信息
grep "node01" -rn ./salt/* --exclude=*.tar.gz
替換字元串:
把./salt/*目前下所有文件進行遍歷,查是否包含node01字元串的,不包括tar.gz結尾的文件。然後把node01用test01進行批量替換。
grep "node01" -rl ./salt/* --exclude=*.tar.gz | xargs sed -i 's/node01/test01/g'
❹ Linux查找和替換目錄下所有文件中字元串
linux查找和替換目錄下所有文件中字元串單個文件中查找替換很簡單,就不說了。文件夾下所內有文件中字容符串的查找替換就要記憶了,最近部署幾十台linux伺服器,記錄下總結。查找文件夾下包含字元串的文件例:查找/usr/local目錄下所有包含rubyer.me的文件。1
grep
-lr
'rubyer.me'
/usr/local/*vim替換單個文件中所有字元串方法例:替換當前文件中所有old為new
www.shiwu.com
1
:%s/old/new/g2#%表示替換說有行,g表示替換一行中所有匹配點。
替換文件夾下包含字元串的文件sed結合grep例:要將目錄/www下面所有文件中的zhangsan都修改成lisi,這樣做:1
sed
-i
s/old/new/g
`grep
old
-rl
/www`作者
skq
❺ linux批量替換文件夾名,文件名,文件內容命令
1.批量改名採用命令rename
rename 語法:
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
-v表示顯示詳細信息,-n表示不實際執行替換,只是看哪些文件會受影響。 -f 表示強制,不管是否有重名。
perlexpr是perl語法的表達式, files則是匹配項。因此,該命令執行結果與perlexpr有關,不一定就是改文件名。
實例: 將所有文件名*.html 改為對應的.htm
rename 's//.html$//.htm$/' *.html
去bak後綴
rename 's//.bak$//' *.bak
將文件名大寫改為小寫
rename 'y/A-Z/a-z/' *
但rename不能遞歸修改。
2.遞歸改名,用find+rename
將文件名的abc改為xyz
find . -name "abc*" -exec rename 's/abc/xyz/' {} /;
該命令可以將當前目錄下所有子目錄的文件都改名。
3.內容替換,用find+sed
將所有ablo 替換為ablozhou
find . -type f -exec sed -i -e "s/ablo/ablozhou/g" {} /;
sed 命令 -i 表示 --in-place,文件原地替換。-e 後跟替換表達式
❻ Linux下的shell編程 如何替換文件中的內容
sed
-i
"s#^connection
=.*#connection
=mysql://keystone:[email protected]/keystone
#g"
file
語法
sed
-i
"s/內容1/內容2/「
文件名,內容1後面的.*
是正則匹配connection=任意內容,#是分隔符,相當於
我們常用的sed的「/」,內容2是需要替換的內容,後面的g是全局替換
file,是操作對象即參數
因為替換內容中有「/」所以建議用「#」做分隔符,這樣不需要轉譯「/」
❼ 總結linux替換字元串的幾種方法
(1)VIM替換字元串方法
1. 基本替換
:s/str1/str2/ 替換當前行第一個str1為str2
:s/str1/str2/g 替換當前行所有str1為str2
:n,$s/str1/str2/ 替換第 n 行開始到最後一行中每一行的第一個str1為str2
:n,$s/str1/str2/g 替換第 n 行開始到最後一行中每一行所有str1為str2
(n 為數字,若 n 為 .,表示從當前行開始到最後一行)
:%s/str1/str2/(等同於 :g/str1/s//str2/) 替換每一行的第一個str1為str2
:%s/str1/str2/g(等同於 :g/str1/s//str2/g) 替換每一行中所有str1為str2
2. 可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符
:s#str1/#str2/# 替換當前行第一個str1/ 為str2/
:%s+/str11/str12/+/str21/str22+ (使用+ 來 替換 / ): /str11/str12/替換成/str21/str22/
3. 文件中刪除^M
問題描述:對於換行,Windows下用回車換行(0A0D)來表示,Linux下是回車(0A)來表示。這樣,將window上的文件拷到Unix上用時,總會有個^M,請寫個用在Unix下的過濾Windows文件的換行符(0D)的shell或c程序。有兩種方法可以完成此目的:
(1)使用命令:cat oldfilename | tr -d 「^V^M」 > newfilename
(2)使用命令:sed -e 「s/^V^M//」 oldfilename > newfilename
需要注意的是在1、2兩種方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必須要手工進行輸入,而不是粘貼。
在vim中處理:首先使用vim打開文件,然後按ESC鍵,接著輸入命令:
:%s/^V^M//
:%s/^M$//g
如果上述方法無用,則正確的解決辦法是:
(1) tr -d "\r" < old_file_name > new_file_name 或者 cat oldfilename | tr -d "\r" > new_file_name
(2) tr -d "\015" < old_file_name > new_file_name或者 cat oldfilename | tr -d "\015" > new_file_name
strings A>B
4. 其它技巧
利用 :s 命令可以實現字元串的替換。具體的用法包括:
:s/str1/str2/ 用字元串 str2 替換行中首次出現的字元串 str1
:s/str1/str2/g 用字元串 str2 替換行中所有出現的字元串 str1
:.,$ s/str1/str2/g 用字元串 str2 替換正文當前行到末尾所有出現的字元串 str1
:1,$ s/str1/str2/g 用字元串 str2 替換正文中所有出現的字元串 str1
:g/str1/s//str2/g 功能同上
從上述替換命令可以看到:g 放在命令末尾,表示對搜索字元串的每次出現進行替換;不加 g,表示只對搜索字元串的首次出現進行替換;g 放在命令開頭,表示對正文中所有包含搜索字元串的行進行替換操作。
(2)sed命令替換字元串
sed替換的基本語法為:
代碼如下:
sed
's/原字元串/替換字元串/'
單引號裡面,s表示替換,三根斜線中間是替換的樣式,特殊字元需要使用反斜線」\」進行轉義,但是單引號」『」是沒有辦法用反斜線」\」轉義的,這時候只要把命令中的單引號改為雙引號就行了,例如:
代碼如下:
sed "s/原字元串包含'/替換字元串包含'/"
//要處理的字元包含單引號
命令中的三根斜線分隔符可以換成別的符號,這在要替換的內容有較多斜線是較為方便,只需要緊跟s定義即可,例如換成問號」?」:
代碼如下:
sed 's?原字元串?替換字元串?'
//自定義分隔符為問號
可以在末尾加g替換每一個匹配的關鍵字,否則只替換每行的第一個,例如:
代碼如下:
sed 's/原字元串/替換字元串/'
//替換所有匹配關鍵字
上箭頭」^」表示行首,美元」$」符號如果在引號中表示行尾,但是在引號外卻表示末行(最後一行),這里犯二了,搜了半天哪個符號表示首行,半天才想起來,首行就是數字」1″啊.那麼在行首和行尾添加字元串就是把行尾和行首替換,例如:
代碼如下:
sed 's/^/添加的頭部&/g' //在所有行首添加
sed
's/$/&添加的尾部/g' //在所有行末添加
sed '2s/原字元串/替換字元串/g' //替換第2行
sed
'$s/原字元串/替換字元串/g' //替換最後一行
sed '2,5s/原字元串/替換字元串/g' //替換2到5行
sed
'2,$s/原字元串/替換字元串/g' //替換2到最後一行
替換樣式可以多個在同一條命令中執行,用分號」;」分隔,例如:
代碼如下:
sed 's/^/添加的頭部&/g;s/$/&添加的尾部/g'
//同時執行兩個替換規則
sed處理過的輸出是直接輸出到屏幕上的,要保存可以將輸出重定向,或者使用參數」i」直接在文件中替換:
代碼如下:
sed -i 's/原字元串/替換字元串/g' filename
//替換文件中的所有匹配項