通過你的描述,替換命令如下:
1、tr 命令來進行替換
[root@localhost ss1]# tr '111' '2222222' < aa.txt
2、sed 命令
[root@localhost ss1]# sed 『s/wyf/wzw/g』 ./person.txt
這里使用sed 內置命令s 來實現替換功能,並且使用了全局替換標志g 表示替換文件中匹配wyf的所有字元串。
1、tr 命令在接文件時比較特殊,需要輸入重定向符號 「<」
2、凡是在文本中出現的「111」均應轉換成「222222」,而不是僅僅將單個進行轉換,這個要注意。
3、在使用sed 命令時,要注意一下語法格式,將要替換的文本「wyf」放在第一個和第二個「/」 之間,將替換後的文本「wzw」放到第二個和第三個「/」 之間。這個要注意。
以上就是我的回答,在具體操作時,可能會有出入,如有問題可私信+關注,我會第一時間來進行回復追答,希望我的回答能幫到你。
Ⅱ Linux的awk、grep、sed工具,實現文本查找、編輯 、格式化
awk、grep、sed是linux文本操作的三大利器,grep適合單純的查找或文本匹配,sed適合編輯匹配到的文本,awk適合格式化文本,對文本進行較復雜格式處理。
命令格式:grep [option] pattern file 用於過濾/搜索的特定字元,可與正則表達式配合,使用上十分靈活。
命令格式:sed [options] '[地址定界] command' file(s) 用於編輯一個或多個文件, 簡化對文件的反復操作。
演示實例:
命令格式:awk [options] 'BEGIN{ action;… } pattern{ action;… } END{ action;… }' file ... 用於在linux下對文本和數據進行處理,數據可以來自一個或多個文件,支持用戶自定義函數和動態正則表達式等功能。
演示實例:
a.隨機取用戶
cat file1 | awk '{ print rand(),$1 }' |sort -k1 |awk '{ print $2 }' |head -4000
b.分組求和
awk '{s[$1] += $2}END{ for(i in s){ print i, s[i] } }' file1 > file2
c.求和
cat data|awk '{sum+=$1} END {print "Sum = ", sum}'
d.求平均
cat data|awk '{sum+=$1} END {print "Average = ", sum/NR}'
e.求標准偏差
cat $FILE | awk -v ave=$ave '{sum+=($1-ave)^2}END{print sqrt(sum/(NR-1))}'
f.列換成行,如果第一列相同,將所有的第二列 第三列 都放到一行裡面
awk '{qq[$1]=qq[$1](" "$2" "$3)}END{for(i in qq)print i,qq[i]}'
g.合並文件,2個文件,每個2列,將他們按照第一列相同的數,來合並成一個三列的文件,同時,將每個文件中針對第一列對應第二列中沒有的數補0
awk 'FNR==NR{a[$1]=$2}FNR<NR{a[$1]?a[$1]=a[$1]" "$2:a[$1]=a[$1]" 0 "$2}END{for(i in a)print i,a[i]}' file1 file2 > file3
Ⅲ 在linux中怎麼用sed命令更改文檔指定內容
我也給個思路吧 —— 用sed根據地址范圍截取文件內容,用Here documents方法添加新的多行內內容,然後重組容文件。具體步驟如下:1)截取test.xml文件起始行到<abcdef>行,保存到tmp文件;
2)將要添加的內容根據變數值展開,附加寫入tmp文件;
3)截取test.xml文件</abcdef>行到結束行,附加寫入tmp文件。
4)移動tmp文件覆蓋test.xml文件。
Ⅳ linux裡面怎麼用sed命令修改文本的指定內容
我也給個思路吧 —— 用sed根據地址范圍截取文件內容,用Here documents方法添加新的多行內容,然後重組文件。具體步驟如下:1)截取test.xml文件起始行到<abcdef>行,保存到tmp文件;
2)將要添加的內容根據變數值展開,附加寫入tmp文件;
3)截取test.xml文件</abcdef>行到結束行,附加寫入tmp文件。
4)移動tmp文件覆蓋test.xml文件。
Ⅳ linux sed 替換
Linux sed 命令是利用腳本來處理文本文件。
sed 可依照腳本的指令來處理、編輯文本文件。
Sed 主要用來自動編輯一個或多個文件、簡化對文件的反復操作、編寫轉換程序等。
語法
參數說明:
regular_express.txt 文件內容如下:
利用 sed 將 regular_express.txt 內每一行結尾若為 . 則換成 !
:q:q
利用 sed 直接在 regular_express.txt 最後一行加入 # This is a test:
由於 $ 代表的是最後一行,而 a 的動作是新增,因此該文件最後新增 # This is a test!
sed 的 -i 選項可以直接修改文件內容,這功能非常有幫助!舉例來說,如果你有一個 100 萬行的文件,你要在第 100 行加某些文字,此時使用 vim 可能會瘋掉!因為文件太大了!那怎辦?就利用 sed 啊!透過 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修訂!
sed -i 常見用法(直接對文本文件進行操作的)
替換掉每行的第一個字元串
替換掉所有的字元串 sed -i 's/原字元串/新字元串/g' file
去掉 「行首」 帶「@」的首字母@
特定字元串的行前插入新行
特定字元串的行後插入新行
特定字元串的刪除
Ⅵ linux 如何使用sed 更改整個文件夾裡麵包含的文件的數據
linux文件命名最好不要有空格。
如果有空格的話,將完整文件名用引號包含起來,如"Auto eth"或'Auto eth'。
for file in "Auto ethX"/*
do
sed ... "$file"
done
如果X是不確定的,那麼可以用 "Auto eth"*/*
Ⅶ Linux中的sed是什麼意思呢,簡單解釋一下啊
Sed是一項Linux指令,全稱是Stream
EDitor,功能同awk類似,差別在於,sed簡單,對列處理的功能要差一些,awk的功能復雜,對列處理的功能比較強大。Sed主要用於自動編輯一個或者多個文件,多用於腳本中對文件的處理。
Sed命令可以對文件進行增加、刪除、修改和查找操作,所以學好sed命令是寫自動化腳本必須的基礎之一。
Ⅷ shell :linux sed 批量替換字元串
Linux下批量替換多個文件中的字元串的簡單方法。用sed命令可以批量替換多個文件中的字元串。
命令如下:
sed -i "s/原字元串/新字元串/g" grep 原字元串 -rl 所在目錄
例如:我要把www目錄下的所有文件里的 charset=gb2312 替換為 charset=UTF-8,執行命令:
sed -i "s/charset=gb2312/charset=UTF-8/g" `grep charset=gb2312 -rl /www`
即可。
解釋一下:
-i 表示inplace edit,就地修改文件
-r 表示搜索子目錄
-l 表示輸出匹配的文件名
這個命令組合很強大,要注意備份文件。
Ⅸ Linux sed 命令詳解
一、基本正則列表與擴展正則
二、sed 文本處理工具的用法介紹
三、認識sed工具的 n、r、i 選項指令
四、認識sed工具的 p、d、s 條件指令
五、認識sed工具的 i、a、c 條件指令
六、認識sed高級應用 r、w 條件指令
七、綜合案例
Linux sed
Stream EDitor,流式編輯器
一、基本正則列表與擴展正則
根據推出時間的不同,分為基本正則和擴展正則,擴展正則在基本正則的基礎上做了一些優化和新增了一些正則表達符號,因為一些命令沒有及時更新,所以你可能會遇到有些命令只支持基本正則,不支持擴展正則,或者需要添加一些支持擴展正則的選項。
關於正則與擴展正則區別的詳細介紹可以看我另一篇shell 正則的介紹
基本正則列表
擴展正則列表
二、sed 文本處理工具的用法介紹:
相關說明如下:
sed命令的常用選項如下:
sed命令常用條件指令如下
三、認識sed工具的 n、r、i 選項指令
# sed [選項] '條件指令' 文件.. ..
上面的條件指令 我們可以拆分為 # sed [選項] '范圍界定+操作指令' 文件.. .. 的格式這樣更容易理解
sed命令可以使用行號或正則做為條件匹配:
1)sed命令的 -n 選項
執行p列印等過濾操作時,希望看到的是符合條件的文本。但不使用任何選項時,默認會將原始文本一並輸出,從而干擾過濾效果。比如,嘗試用sed輸出/etc/hosts的第1行:
可以發現所有的行都被顯示出來了(第1行重復2次)。—— 正確的用法應該添加 -n 選項,這樣就可以只顯示第1行了:
行號可以是連續的行號,如列印passwd第3到第6行賬戶的信息:
2)sed命令的 -r 選項
需要用到擴展正則時,需要加 -r選項
3)sed命令的 -i 選項
正常情況下,sed命令所做的處理只是把操作結果(包括列印、刪除等)輸出到當前終端屏幕,而並不會對原始文件做任何更改:
若希望直接修改文件內容,應添加選項 -i 。
需要特別注意的是,和一些指令組合和使用的先後順序都會對最終輸出結果產生影響
例如: 指令 -n、和操作操作p
比如,直接刪除test.txt(自行創建一個任意內容的文件)的第1~4行:
下文中關於使用sed修改文件的示例中,為了避免大家在練習過程中因誤操作導致系統故障,命令省略 –i 選項,不再逐一說明。需要時,大家可自行加上此選項。
4)多個指令可以使用分號隔離
用分號來隔離多個操作,比如:
1)行號案例
2)正則案例
3)沒有條件,則表示匹配所有行
四、認識sed工具的 p、d、s 條件指令
1)下面看看sed工具的p指令案例集錦(自己提前生成一個a.txt文件)
2)下面看看sed工具的d指令案例集錦(自己提前生成一個a.txt文件)
3)sed命令的s替換基本功能(s/舊內容/新內容/選項):
4)下面看看sed工具的s指令案例集錦(自己提前生成一個a.txt文件)
注意:替換操作的分隔「/」可改用其他字元,如#、&等,便於修改文件路徑
以下操作使用nssw.txt作為測試文件。
參考數據文件內容如下:
5)刪除文件中每行的第二個、最後一個字元
分兩次替換操作,第一次替換掉第2個字元,第二次替換掉最後一個字元:
6)將文件中每行的第一個、倒數第1個字元互換
每行文本拆分為「第1個字元」、「中間的所有字元」、「倒數第1個字元」三個部分,然後通過替換操作重排順序為「3-2-1」:
7)刪除文件中所有的數字
因原文件內沒有數字,行首也沒有空格,這里在內容中新增一些數字另外新幾行內容 首行添加幾行空格,生成一個新測試文件以 nssw2.txt
以nssw2.txt文件為例,刪除所有數字、行首空格的操作如下:
8)為文件中每個大寫字母添加括弧[]
使用「()」可實現保留功能,所以可參考下列操作解決:
五、認識sed工具的 i、a、c 條件指令
# sed [選項] '條件指令' 文件..
sed工具的多行文本處理操作:
基本語法格式案例:
1)sed命令的 i 指定行之前插入基本功能
2)sed命令的a追加基本功能
3)sed命令的c替換基本功能
六、認識sed高級應用 r、w 條件指令
1)sed命令的 r 讀取文件
2)sed命令的 w 保存到文件
七、綜合案例
1) 綜合案例1
2)綜合案例2 腳本應用
Ⅹ Linux三劍客(sed)-編輯匹配到的文本
sed編輯器是一行一行的處理文件,正在處理的內容存放在模式空間(緩沖區)中,處理完畢後按照選項的規定進行輸出或文件的修改。
sed主要用來自動編輯一個或多個文件;簡化文件的反復操作,用於非交互編譯文件。
可以使用一個簡單的數字,或是一個行號范圍
注意:p的動作是:列印匹配行。
1. 原始文件:
2. sed的默認動作
(1)sed的默認動作是列印文件中的所有行。
3. 列印特定行
(1)因為sed命令默認列印文件中所有行。所以第三行會被列印兩遍。那如何只列印第三行呢?使用【-n】命令,只列印匹配的行。
(2)使用【-n】命令,只列印匹配到的行
(3)列印[n,m]行
(4)列印包含模式的行
(5)列印包含模式和指定行號之間的行
(6)包含模式和包含模式之間的行
(7) {}執行多個命令(command),使用;隔開。=是顯示文件行的行號。p是列印匹配行
(8)!取反操作
(9)q命令:第一個模式匹配完成後退出或立即退出,使用該命令列印前5行
(1)使用[]進行正則匹配
(2)其他的正則表達式
(1)列印出以#開頭的行,然後用!進行反選,則表示過濾掉以#開頭的行,不會過濾掉空格。
(2)匹配以#開頭的行,進行取反,則列印出非#開頭的行,然後其結果在對空格開頭的行進行取反。即 過濾掉以#開頭的行和以空格開頭的行。 {}表示在定位行執行的命令組。
(3)sed支持對單個文件實現不同的操作,每個操作用-e參數。定位到執行的行後,使用d命令,直接刪除匹配到的行。
需要注意的是,對源文件的添加要使用【-i】參數。
s:使用替換模式替換相應模式
(1)在匹配行前面替換字元,使用【s】命令。
(2)在所有行開頭替換元素【s】
(3)在所有行的末尾替換元素
(4)指定行,進行替換操作
(5)【&】符號代表的是匹配到的字元。在匹配到字元後,可以使用&代替。
(6)在匹配到行前面添加一行,使用【i】的命令
(7)在匹配行的後面添加一行,使用【a】命令
(8)當添加多行時,使用 來轉義
(9)@代表的是【地址定界符】,一般由三個組成,定界符可以是/,$,#等特殊字元,此命令表示,匹配特定字元的行進行替換。
(10)使用命令【g】修改全文中出現的匹配字元。
(11)若後面接數字之後在接g,表示匹配的行中,第幾次出現。就替換,2g表示替換行中第二次出現。
(1)刪除以非#號開頭的行,即顯示以#號開頭的行。
(2)刪除第一行
(3)刪除最後一行
(4)刪除指定的行區間
(5)刪除包含特定單詞的行
本文參考:
sed命令詳解