sed簡介:流編輯工具,用來對(duì)文本進(jìn)行過濾與替換操作。
創(chuàng)新互聯(lián)于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元東營做網(wǎng)站,已為上家服務(wù),為東營各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
sed流程:sed通過一次僅讀取一行內(nèi)容來對(duì)某些指令進(jìn)行處理后輸出。
1、sed通過文件或管道讀取文件內(nèi)容,但sed默認(rèn)并不直接修改源文件,而是將讀入的內(nèi)容復(fù)制到緩沖區(qū)中,稱之為模式空間。
2、所有的指令操作都是在模式空間找那個(gè)進(jìn)行
3、sed根據(jù)相應(yīng)的指令對(duì)模式空間中的內(nèi)容進(jìn)行處理并輸出結(jié)果,默認(rèn)輸出至標(biāo)準(zhǔn)輸出(即屏幕上)。
sed基本語法格式:
用法:sed[選項(xiàng)]...{腳本指令}[輸入文件]...
選項(xiàng): -version 顯示sed版本
-help :顯示幫助文檔
-n,-quiet,-silent靜默輸出,默認(rèn)情況下,sed程序在所有的腳本指令執(zhí)行完畢后,將自動(dòng)打印模式空間中的內(nèi)容。
-e script允許多個(gè)腳本指令被執(zhí)行
-f script-file從文件中讀取腳本指令,對(duì)編寫自動(dòng)化腳本程序很實(shí)用
-i ,-in-place 該選項(xiàng)直接修改源文件
-l N 該選項(xiàng)指定l指令可以輸出的行長度,l指令為輸出非打印字符。
-posix 禁用GNU sed擴(kuò)展功能。
-r 在腳本指令中使用擴(kuò)展正則表達(dá)式。
-s,-separate 默認(rèn)情況下,sed將把輸入的多個(gè)文件名作為一個(gè)長的連續(xù)的輸入流。而GNU sed則允許把它們當(dāng)作單獨(dú)的文件。
-u,-unbuffered 最低限度的緩存輸入與輸出
a,append表示追加指令;
i,insert表示插入指令;
d,delete表示刪除指令;
s,substitution表示替換指令。
sed腳本指令的基本格式是:
[地址,即路徑]命令(有些命令僅可以對(duì)一行操作,有些可以對(duì)多行操作),命令也可以用花括號(hào)進(jìn)行組合,使命令序列可以作用于同一個(gè)地址。
address{
command1
command2
command3
}
sed的基本工作方式是:
sed的替換命令s:
1、全局替換 : s/old/new/g ,其中g(shù)為全局替換,用于替換所有出現(xiàn)的次數(shù); /如果和正則匹配的內(nèi)容沖突可以使用其他符號(hào),如 : s@old@new@g
2、標(biāo)志位
為什么要有多行模式: 配置文件一般有單行出現(xiàn),但也有使用json或XML格式的配置文件,為多行出現(xiàn)。
多行模式處理命令N、D、P
1. sed -i 's/CANCEL_TIME/CANCEL_RECV_TIME/g' csv2drds-TF_B_PAYLOG_D.json
---指定文件替換,將文件中的CANCEL_TIME替換成CANCEL_RECV_TIME;
2.?sed -i 's/CANCEL_TIME/CANCEL_RECV_TIME/g' `grep CANCEL_TIME -rl ./*TF_B_PAYLOG_D*.json`
---批量文件替換,遞歸查找含CANCEL_TIME的文件,將所有文件中的CANCEL_TIME替換成CANCEL_RECV_TIME;
3. sed -i 's/\/tmp\/ditagent\/TF_B_PAYLOG_D.csv/\/vdata\/datapre\/281\/'"$filename"'/g' $jsonname
---帶/的字符串替換,將/tmp/ditagent/TF_B_PAYLOG_D.csv替換成/vdata/datapre/281/'"$filename"'
4.?sed -i 's/^/beginstring/g' *.txt
---在所有行首添加字符串;
5.??sed -i 's/$/endstring/g' *.txt
---在所有行末添加字符串
6. sed -i '2s/原字符串/替換字符串/g' *.txt
---替換第2行
7. sed -i?'$s/原字符串/替換字符串/g'?*.txt
---替換最后一行
8. sed?-i? '2,5s/原字符串/替換字符串/g'?*.txt
---替換2到5行
9. sed -i? '2,$s/原字符串/替換字符串/g'?*.txt
---替換2到最后一行
10. sed 's/\x80/|/g' test.dat |iconv -f gbk -t utf-8 testutf8.dat
---把test.dat中的歐元符號(hào)替換成豎線,再將文件gbk格式轉(zhuǎn)成utf8
-i選項(xiàng)是直接在文件中替換,不在終端輸出;
-r選項(xiàng)是所給的path中的目錄遞歸查找;
-l選項(xiàng)是輸出所有匹配到oldstring的文件;
s/表示替換
/g表示全局替換
ALT快捷鍵在WIN下Xshell不可用
ctrl + a 光標(biāo)切換到命令行行首
ctrl + e 光標(biāo)切換到命令行末尾
ctrl + l 清屏 等同于 clear
ctrl + u 清除剪切光標(biāo)之前的內(nèi)容
ctrl + k 清楚剪切光標(biāo)之后的內(nèi)容
ctrl + w 清除剪切光標(biāo)之前的一個(gè)word
alt + d 清除剪切光標(biāo)之后的一個(gè)word
ctrl + y 粘貼剛才刪除字符
ctrl + h 向行首刪除一個(gè)字符
ctrl + d 向行尾刪除一個(gè)字符,空行時(shí)等于 exit 和 logout
ctrl + _ 恢復(fù)剛操作的命令 xshell無法使用
ctrl + b 光標(biāo)向行首移動(dòng)一個(gè)字符 ( backwards )
ctrl + f 光標(biāo)向行尾移動(dòng)一個(gè)字符( forwards )
ctrl + ← 光標(biāo)向行首移動(dòng)一個(gè)word
ctrl + → 光標(biāo)向行尾移動(dòng)一個(gè)word
ctrl + r 歷史命令中查找 (關(guān)鍵字可用)
ctrl + z 轉(zhuǎn)入后臺(tái)運(yùn)行
history 10 顯示最近使用過的10個(gè)命令
!! 執(zhí)行前一個(gè)命令
! + 字符 執(zhí)行前一個(gè)以“字符”開頭的命令
! + Num 執(zhí)行對(duì)應(yīng)行號(hào)的命令
! + ? abc 執(zhí)行前一個(gè)包含abc的命令
! -n 執(zhí)行n個(gè)命令之前的那個(gè)命令
!* 調(diào)用上一條命令的所有參數(shù)
!$ 調(diào)用上一條命令的最后一個(gè)參數(shù)
!-: 調(diào)用上一條命令除了最后一個(gè)參數(shù)的部分
ALT + num + . 調(diào)用上一條命令中任意一個(gè)部分
!!:gs/$1/$2 替換上一條命令中所有$1為$2
!!:gs^$1^$2 替換上一條命令中第一個(gè)$1為$2
分享題目:linux命令行替換 linux命令行替換文件內(nèi)容
新聞來源:http://vcdvsql.cn/article28/hejcjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、服務(wù)器托管、網(wǎng)站導(dǎo)航、搜索引擎優(yōu)化、自適應(yīng)網(wǎng)站、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)