sed -i "s/查找字段/替換字段/g"
克拉瑪依區(qū)網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,克拉瑪依區(qū)網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為克拉瑪依區(qū)上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的克拉瑪依區(qū)做網(wǎng)站的公司定做!
例如:test.txt包括:
a;b
c;d
使用命令把;替換成換行符:
而后,test.txt變?yōu)椋?/p>
a
b
c
d
sed簡介:流編輯工具,用來對文本進行過濾與替換操作。
sed流程:sed通過一次僅讀取一行內(nèi)容來對某些指令進行處理后輸出。
1、sed通過文件或管道讀取文件內(nèi)容,但sed默認并不直接修改源文件,而是將讀入的內(nèi)容復(fù)制到緩沖區(qū)中,稱之為模式空間。
2、所有的指令操作都是在模式空間找那個進行
3、sed根據(jù)相應(yīng)的指令對模式空間中的內(nèi)容進行處理并輸出結(jié)果,默認輸出至標(biāo)準(zhǔn)輸出(即屏幕上)。
sed基本語法格式:
用法:sed[選項]...{腳本指令}[輸入文件]...
選項: -version 顯示sed版本
-help :顯示幫助文檔
-n,-quiet,-silent靜默輸出,默認情況下,sed程序在所有的腳本指令執(zhí)行完畢后,將自動打印模式空間中的內(nèi)容。
-e script允許多個腳本指令被執(zhí)行
-f script-file從文件中讀取腳本指令,對編寫自動化腳本程序很實用
-i ,-in-place 該選項直接修改源文件
-l N 該選項指定l指令可以輸出的行長度,l指令為輸出非打印字符。
-posix 禁用GNU sed擴展功能。
-r 在腳本指令中使用擴展正則表達式。
-s,-separate 默認情況下,sed將把輸入的多個文件名作為一個長的連續(xù)的輸入流。而GNU sed則允許把它們當(dāng)作單獨的文件。
-u,-unbuffered 最低限度的緩存輸入與輸出
a,append表示追加指令;
i,insert表示插入指令;
d,delete表示刪除指令;
s,substitution表示替換指令。
sed腳本指令的基本格式是:
[地址,即路徑]命令(有些命令僅可以對一行操作,有些可以對多行操作),命令也可以用花括號進行組合,使命令序列可以作用于同一個地址。
address{
command1
command2
command3
}
sed的基本工作方式是:
sed的替換命令s:
1、全局替換 : s/old/new/g ,其中g(shù)為全局替換,用于替換所有出現(xiàn)的次數(shù); /如果和正則匹配的內(nèi)容沖突可以使用其他符號,如 : s@old@new@g
2、標(biāo)志位
為什么要有多行模式: 配置文件一般有單行出現(xiàn),但也有使用json或XML格式的配置文件,為多行出現(xiàn)。
多行模式處理命令N、D、P
1、vi命令下的查找和替換
1.1 vi下的查找
/helloEnter :向下查找hello匹配字符串
?helloEnter:向上查找hello匹配字符串
使用了查找命令之后,使用如下兩個鍵快速查找:
n:按照同一方向繼續(xù)查找
N:按照反方向查找
hello是需要匹配的字符串,例如:
/nameEnter? ? ? #查找name
/nameEnter? ? #查找name單詞(注意前后的空格)
除此之外,hello還可以使用一些特殊字符,包括(/、^、$、*、.),其中前三個這兩個是vi與vim通用的,“/”為轉(zhuǎn)義字符。
/^nameEnter? ? #查找以name開始的行
/name$Enter? ? #查找以name結(jié)束的行
//^nameEnter? ? #查找^name字符串
1.2 vi下的替換
:s/name/title/? ? ? ? #替換當(dāng)前行第一個 name 為 title
:s/name/title/g? ? #替換當(dāng)前行所有 name 為 title
:n,$s/name/title/? ? #替換第 n 行開始到最后一行中每一行的第一個 name 為 title
:n,$s/name/title/g? ? #替換第 n 行開始到最后一行中每一行所有 name 為 title
#(n 為數(shù)字,若 n 為 .,表示從當(dāng)前行開始到最后一行)
:%s/name/title/? ? ? ? #(等同于 :g/name/s//title/) 替換每一行的第一個 name 為 title
:%s/name/title/g? ? #(等同于 :g/name/s//title/g) 替換每一行中所有 name 為 title
可以使用 #或+ 作為分隔符,此時中間出現(xiàn)的 / 不會作為分隔符
:s#name/#title/#? ? ? ? 替換當(dāng)前行第一個 name/ 為 title/
:%s+/oradata/apras/+/user01/apras1+ (
使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/
2.sed和grep配合
命令:sed -i s/yyyy/xxxx/g `grep yyyy -rl --include="*.txt" ./`
作用:將當(dāng)前目錄(包括子目錄)中所有txt文件中的yyyy字符串替換為xxxx字符串。其中,
-i 表示操作的是文件,``括起來的grep命令,表示將grep命令的的結(jié)果作為操作文件。
s/yyyy/xxxx/表示查找yyyy并替換為xxxx,后面跟g表示一行中有多個yyyy的時候,都替換,而不是僅替換第一個
另外,如果不需要查找子目錄,僅需要在當(dāng)前目錄替換,用sed命令就行了,命令如下:sed -i s/xxxx/yyyy/g ./*.txt
3.find命令查找和替換
命令格式:find -name '要查找的文件名' | xargs perl -pi -e 's|被替換的字符串|替換后的字符串|g'
#查找替換當(dāng)前目錄下包含字符串并進行替換
find -name '*.txt' | xargs perl -pi -e 's|江蘇|上海|g'
#遞歸查找替換
find . -type f -name '*.html' | xargs perl -pi -e 's|蘇州|上海|g'
知道怎么增刪改查就算是入門了。因為這是最常用的。
在使用linux時,經(jīng)常需要進行文件查找。其中查找的命令主要有find和grep。兩個命令是有區(qū)別的。
區(qū)別:(1)find命令是根據(jù)文件的屬性進行查找,如文件名,文件大小,所有者,所屬組,是否為空,訪問時間,修改時間等。
? ? ? ? ? (2)grep是根據(jù)文件的內(nèi)容進行查找,會對文件的每一行按照給定的模式(patter)進行匹配查找。
一.find命令
基本格式:find? path expression
1.按照文件名查找
(1)find / -name httpd.conf#在根目錄下查找文件httpd.conf,表示在整個硬盤查找
(2)find /etc -name httpd.conf#在/etc目錄下文件httpd.conf
(3)find /etc -name '*srm*'#使用通配符*(0或者任意多個)。表示在/etc目錄下查找文件名中含有字符串‘srm’的文件
(4)find . -name 'srm*' #表示當(dāng)前目錄下查找文件名開頭是字符串‘srm’的文件
2.按照文件特征查找
(1)find / -amin -10 # 查找在系統(tǒng)中最后10分鐘訪問的文件(access time)
(2)find / -atime -2 # 查找在系統(tǒng)中最后48小時訪問的文件
(3)find / -empty # 查找在系統(tǒng)中為空的文件或者文件夾
(4)find / -group cat # 查找在系統(tǒng)中屬于 group為cat的文件
(5)find / -mmin -5 # 查找在系統(tǒng)中最后5分鐘里修改過的文件(modify time)
(6)find / -mtime -1 #查找在系統(tǒng)中最后24小時里修改過的文件
(7)find / -user fred #查找在系統(tǒng)中屬于fred這個用戶的文件
(8)find / -size +10000c#查找出大于10000000字節(jié)的文件(c:字節(jié),w:雙字,k:KB,M:MB,G:GB)
(9)find / -size -1000k #查找出小于1000KB的文件
3.使用混合查找方式查找文件
參數(shù)有: !,-and(-a),-or(-o)。
(1)find /tmp -size +10000c -and -mtime +2 #在/tmp目錄下查找大于10000字節(jié)并在最后2分鐘內(nèi)修改的文件
? (2)find / -user fred -or -user george #在/目錄下查找用戶是fred或者george的文件文件
? (3)find /tmp ! -user panda#在/tmp目錄中查找所有不屬于panda用戶的文件
二、grep命令
? 基本格式:find? expression
1.主要參數(shù)
[options]主要參數(shù):
-c:只輸出匹配行的計數(shù)。
-i:不區(qū)分大小寫
-h(huán):查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-n:顯示匹配行及行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的所有行。
pattern正則表達式主要參數(shù):
\: 忽略正則表達式中特殊字符的原有含義。
^:匹配正則表達式的開始行。
$: 匹配正則表達式的結(jié)束行。
\:從匹配正則表達 式的行開始。
\:到匹配正則表達式的行結(jié)束。
[ ]:單個字符,如[A]即A符合要求 。
[ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
.:所有的單個字符。
* :有字符,長度可以為0。
2.實例
(1)grep 'test' d*#顯示所有以d開頭的文件中包含 test的行
(2)grep ‘test’ aa bb cc #顯示在aa,bb,cc文件中包含test的行
(3)grep ‘[a-z]\{5\}’ aa #顯示所有包含每行字符串至少有5個連續(xù)小寫字符的字符串的行
(4)grep magic /usr/src#顯示/usr/src目錄下的文件(不含子目錄)包含magic的行
(5)grep -r magic /usr/src#顯示/usr/src目錄下的文件(包含子目錄)包含magic的行
(6)grep -w pattern files :只匹配整個單詞,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
查看文件內(nèi)容的命令:
cat? ? 由第一行開始顯示內(nèi)容,并將所有內(nèi)容輸出
tac? ? 從最后一行倒序顯示內(nèi)容,并將所有內(nèi)容輸出
more? ? 根據(jù)窗口大小,一頁一頁的現(xiàn)實文件內(nèi)容
less? ? 和more類似,但其優(yōu)點可以往前翻頁,而且進行可以搜索字符
head? ? 只顯示頭幾行
tail? ? 只顯示最后幾行
nl? ? ? 類似于cat -n,顯示時輸出行號
tailf? 類似于tail -f
1.cat 與 tac
cat的功能是將文件從第一行開始連續(xù)的將內(nèi)容輸出在屏幕上。但是cat并不常用,原因是當(dāng)文件大,行數(shù)比較多時,屏幕無法全部容下時,只能看到一部分內(nèi)容。
cat語法:cat [-n]? 文件名 (-n : 顯示時,連行號一起輸出)
tac的功能是將文件從最后一行開始倒過來將內(nèi)容數(shù)據(jù)輸出到屏幕上。我們可以發(fā)現(xiàn),tac實際上是cat反過來寫。這個命令也不常用。
tac語法:tac 文件名。
2.more和less(常用)
more的功能是將文件從第一行開始,根據(jù)輸出窗口的大小,適當(dāng)?shù)妮敵鑫募?nèi)容。當(dāng)一頁無法全部輸出時,可以用“回車鍵”向下翻行,用“空格鍵”向下翻頁。退出查看頁面,請按“q”鍵。另外,more還可以配合管道符“|”(pipe)使用,例如:ls -al | more
more的語法:more 文件名
Enter 向下n行,需要定義,默認為1行;
Ctrl f 向下滾動一屏;
空格鍵 向下滾動一屏;
Ctrl b 返回上一屏;
= 輸出當(dāng)前行的行號;
:f 輸出文件名和當(dāng)前行的行號;
v 調(diào)用vi編輯器;
! 命令 調(diào)用Shell,并執(zhí)行命令;
q 退出more
less的功能和more相似,但是使用more無法向前翻頁,只能向后翻。
less可以使用【pageup】和【pagedown】鍵進行前翻頁和后翻頁,這樣看起來更方便。
less的語法:less 文件名
less還有一個功能,可以在文件中進行搜索你想找的內(nèi)容,假設(shè)你想在passwd文件中查找有沒有weblogic字符串,那么你可以這樣來做:
[root@redhat etc]# less passwd
然后輸入:
/weblogic
回車
此時如果有weblogic字符串,linux會把該字符已高亮方式顯示。
退出查看頁面,請按“q”鍵。
3.head和tail
head和tail通常使用在只需要讀取文件的前幾行或者后幾行的情況下使用。head的功能是顯示文件的前幾行內(nèi)容
head的語法:head [n number] 文件名 (number 顯示行數(shù))
tail的功能恰好和head相反,只顯示最后幾行內(nèi)容
tail的語法:tail [-n number] 文件名
4.nl
nl的功能和cat -n一樣,同樣是從第一行輸出全部內(nèi)容,并且把行號顯示出來
nl的語法:nl 文件名
1、vi
vi 1.txt 會直接創(chuàng)建并打開一個文件1.txt
2、touch
touch的作用是更改一個文件或目錄的時間。touch 2.txt 如果2.txt不存在,則創(chuàng)建空文件2.txt
3、echo
echo “abcd” 3.txt 可以直接創(chuàng)建文件3.txt并將abcd寫入。
4、less 、more 、cat
三者都是將文件內(nèi)容輸出到標(biāo)準(zhǔn)輸出,其中l(wèi)ess和more可以分頁顯示,cat是顯示全部。
三者可以根據(jù)已經(jīng)存在的文件創(chuàng)建新的文件。假設(shè)已經(jīng)存在文件1.txt。
cat 1.txt 2.txt
less 1.txt 3.txt
more 1.txt 4.txt
此時創(chuàng)建的文件內(nèi)容都和1.txt中文件內(nèi)容相同。
rm -f 文件名
-f? 表示強制
將會強行刪除文件,且無提示
功能說明:刪除文件或目錄。
語法:rm [-dfirv][--help][--version][文件或目錄...]
補充說明:執(zhí)行rm指令可刪除文件或目錄,如欲刪除目錄必須加上參數(shù)”-r”,否則預(yù)設(shè)僅會刪除文件。
參數(shù):
-d或–directory 直接把欲刪除的目錄的硬連接數(shù)據(jù)刪成0,刪除該目錄。
-f或–force 強制刪除文件或目錄。
-i或–interactive 刪除既有文件或目錄之前先詢問用戶。
-r或-R或–recursive 遞歸處理,將指定目錄下的所有文件及子目錄一并處理。
-v或–verbose 顯示指令執(zhí)行過程。
將目錄A重命名為B
mv A B
方法一:
命令是:vi,vim
vi 編輯器,相當(dāng)于記事本,有編輯功能,但較弱
vim 復(fù)雜的編輯器,相當(dāng)于windows的 editplus, notepad++ 等
------------------------
步驟:
1、執(zhí)行 vi world.txt? 進入編輯器(默認命令模式),
2、點擊a或i進入編輯模式,敲入內(nèi)容:hello linux world !
3、然后按鍵盤上的esc鍵退出編輯模式(進入到命令模式),
4、最后敲冒號:,
5、再敲wq保存并退出。
-------
wq解釋為:write quite
不想保存,q
強制退出 q!
方法二
對于簡單的,使用 echo 打印命令。
echo "字符串",功能:在屏幕上打印 字符串。
用 echo? 或 echo ? 導(dǎo)入到文件里。
echo 'hello linux' /data/hello.txt? 這個在企業(yè)里很常用:單行內(nèi)容追加到文件結(jié)尾。
一個大于號,是覆蓋重定向,會清除文件里的所有以前數(shù)據(jù),增加新數(shù)據(jù)。
兩個大于號,是追加重定向,文件結(jié)尾加入內(nèi)容,不會刪除已有文件的內(nèi)容。
方法三:特殊用法使用cat
cat/data/hello.txt
hello world world
EOF
----------
EOF要成對出現(xiàn),且是增加的內(nèi)容里沒有的,EOF可以被任意成對內(nèi)容替換。
cat 是查看文件內(nèi)容的命令
網(wǎng)站標(biāo)題:linux搜索和替換命令,linux索引命令
轉(zhuǎn)載來源:http://jinyejixie.com/article18/hsiggp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站建設(shè)、ChatGPT、關(guān)鍵詞優(yōu)化、小程序開發(fā)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)