linux字符替换
Ⅰ 在red hat enter linux中用怎么替换字符串
sed。在linux中可以利用sed命令来查找和替换文件中的字符串,该命令采用的是流编辑模式,可以根据正则表达式匹配和处理文本文件中的数据,替换语法为“sed”s/要搜索的字符串或正则表达式/替换值/g'要执行操作的文件名”。
Ⅱ 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
//替换文件中的所有匹配项
Ⅲ Linux命令之sed-替换字符串
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中的欧元符号替换成竖线,再将文件gbk格式转成utf8
-i选项是直接在文件中替换,不在终端输出;
-r选项是所给的path中的目录递归查找;
-l选项是输出所有匹配到oldstring的文件;
s/表示替换
/g表示全局替换
Ⅳ Linux涓璿i镄勬煡镓俱佹浛鎹銆佸垹闄ゆ搷浣
vi镆ユ垒镟挎崲锻戒护璇﹁В
涓銆佹煡镓炬煡镓惧懡浠/patternEnter 锛氩悜涓嬫煡镓绯attern鍖归厤瀛楃︿覆?patternEnter锛氩悜涓婃煡镓绯attern鍖归厤瀛楃︿覆浣跨敤浜嗘煡镓惧懡浠や箣钖庯纴浣跨敤濡备笅涓や釜阌蹇阃熸煡镓撅细n锛氭寜镦у悓涓鏂瑰悜缁х画镆ユ垒N锛氭寜镦у弽鏂瑰悜镆ユ垒瀛楃︿覆鍖归厤pattern鏄闇瑕佸尮閰岖殑瀛楃︿覆锛屼緥濡傦细
1: /abcEnter #镆ユ垒abc2: / abc Enter #镆ユ垒abc鍗曡瘝锛堟敞镒忓墠钖庣殑绌烘牸锛
闄ゆや箣澶栵纴pattern杩桦彲浠ヤ娇鐢ㄤ竴浜涚壒娈婂瓧绗︼纴鍖呮嫭锛/銆乛銆$銆*銆.锛夛纴鍏朵腑鍓崭笁涓杩欎袱涓鏄痸i涓巚im阃氱敤镄勶纴钬/钬濅负杞涔夊瓧绗︺
1: /^abcEnter #镆ユ垒浠abc寮濮嬬殑琛 2: /test$Enter #镆ユ垒浠abc缁撴潫镄勮 3: //^testEnter #镆ユ垒^tabc瀛楃︿覆
浜屻佹浛鎹㈠熀链镟挎崲
1: :s/vivian/sky/ #镟挎崲褰揿墠琛岀涓涓 vivian 涓 sky2: :s/vivian/sky/g #镟挎崲褰揿墠琛屾墍链 vivian 涓 sky3: :n,$s/vivian/sky/ #镟挎崲绗 n 琛屽紑濮嫔埌链钖庝竴琛屼腑姣忎竴琛岀殑绗涓涓 vivian 涓 sky4: :n,$s/vivian/sky/g #镟挎崲绗 n 琛屽紑濮嫔埌链钖庝竴琛屼腑姣忎竴琛屾墍链 vivian 涓 sky5: 锛坣 涓烘暟瀛楋纴鑻 n 涓 .锛岃〃绀轰粠褰揿墠琛屽紑濮嫔埌链钖庝竴琛岋级6: 7: :%s/vivian/sky/ #锛堢瓑钖屼簬 :g/vivian/s//sky/锛 镟挎崲姣忎竴琛岀殑绗涓涓 vivian 涓 sky8: :%s/vivian/sky/g #锛堢瓑钖屼簬 :g/vivian/s//sky/g锛 镟挎崲姣忎竴琛屼腑镓链 vivian 涓 sky
鍙浠ヤ娇鐢 #鎴+ 浣滀负鍒嗛殧绗︼纴姝ゆ椂涓闂村嚭鐜扮殑 / 涓崭细浣滀负鍒嗛殧绗
1: :s#vivian/#sky/# 镟挎崲褰揿墠琛岀涓涓 vivian/ 涓 sky/2: :%s+/oradata/apras/+/user01/apras1+ 锛3: 浣跨敤+ 𨱒 镟挎崲 / 锛夛细 /oradata/apras/镟挎崲鎴/user01/apras1/
鍒犻櫎鏂囨湰涓镄刕M闂棰樻弿杩帮细瀵逛簬鎹㈣岋纴window涓嬬敤锲炶溅鎹㈣岋纸0A0D锛夋潵琛ㄧず锛宭inux涓嬫槸锲炶溅锛0A锛夋潵琛ㄧず銆傝繖镙凤纴灏吣indow涓婄殑鏂囦欢𨰾峰埌unix涓婄敤镞讹纴镐讳细链変釜^M锛岃峰啓涓鐢ㄥ湪unix涓嬬殑杩囨护windows鏂囦欢镄勬崲琛岀︼纸0D锛夌殑shell鎴朿绋嫔簭銆备娇鐢ㄥ懡浠わ细cat filename1 | tr -d 钬淾V^M钬 newfile;浣跨敤锻戒护锛歴ed -e 钬渟/^V^M//钬 filename outputfilename闇瑕佹敞镒忕殑鏄鍦1銆2涓ょ嶆柟娉曚腑锛宆V鍜宆M鎸囩殑鏄疌trl+V鍜孋trl+M銆备綘蹇呴’瑕佹坠宸ヨ繘琛岃緭鍏ワ纴钥屼笉鏄绮樿创銆傚湪vi涓澶勭悊锛氶栧厛浣跨敤vi镓揿紑鏂囦欢锛岀劧钖庢寜ESC阌锛屾帴镌杈揿叆锻戒护锛
1: :%s/^V^M//2: :%s/^M$//g
濡傛灉涓婅堪鏂规硶镞犵敤锛屽垯姝g‘镄勮В鍐冲姙娉曟槸锛
1: tr -d 钬/r钬 src dest2: tr -d 钬/015钬 dest3: 4: strings AB
鍏跺畠鐢ㄦ硶
1: :s/str1/str2/ #鐢ㄥ瓧绗︿覆 str2 镟挎崲琛屼腑棣栨″嚭鐜扮殑瀛楃︿覆 str12: :s/str1/str2/g #鐢ㄥ瓧绗︿覆 str2 镟挎崲琛屼腑镓链夊嚭鐜扮殑瀛楃︿覆 str13: :.,$ s/str1/str2/g #鐢ㄥ瓧绗︿覆 str2 镟挎崲姝f枃褰揿墠琛屽埌链灏炬墍链夊嚭鐜扮殑瀛楃︿覆 str14: :1,$ s/str1/str2/g #鐢ㄥ瓧绗︿覆 str2 镟挎崲姝f枃涓镓链夊嚭鐜扮殑瀛楃︿覆 str15: :g/str1/s//str2/g #锷熻兘钖屼笂
浠庝笂杩版浛鎹㈠懡浠ゅ彲浠ョ湅鍒帮细g 鏀惧湪锻戒护链灏撅纴琛ㄧず瀵规寚瀹氲岀殑鎼灭储瀛楃︿覆镄勬疮娆″嚭鐜拌繘琛屾浛鎹锛涗笉锷 g锛岃〃绀哄彧瀵规寚瀹氲岀殑鎼灭储瀛楃︿覆镄勯栨″嚭鐜拌繘琛屾浛鎹锛沢 鏀惧湪锻戒护寮澶达纴琛ㄧず瀵规f枃涓镓链夊寘钖鎼灭储瀛楃︿覆镄勮岃繘琛屾浛鎹㈡搷浣溿备篃灏辨槸璇村懡浠ょ殑寮濮嫔彲浠ユ坊锷犲奖鍝岖殑琛岋纴濡傛灉涓篻琛ㄧず瀵规墍链夎岋绂锻戒护镄勭粨灏惧彲浠ヤ娇鐢╣𨱒ヨ〃绀烘槸钖﹀规疮涓琛岀殑镓链夊瓧绗︿覆閮芥湁褰卞搷銆备笁銆佺亩鍗旷殑vim姝e垯琛ㄨ揪寮忚勫垯鍦╲im涓链夊洓绉嶈〃杈惧纺瑙勫垯锛歮agic(/m)锛氶櫎浜$.*^涔嫔栧叾浠栧厓瀛楃﹂兘瑕佸姞鍙嶆枩𨱒爊omagic(/M)锛氶櫎浜$^涔嫔栧叾浠栧厓瀛楃﹂兘瑕佸姞鍙嶆枩𨱒/v锛埚嵆 very magic 涔嬫剰锛夛细浠讳綍鍏冨瓧绗﹂兘涓岖敤锷犲弽鏂沧潬/V锛埚嵆 very nomagic 涔嬫剰锛夛细浠讳綍鍏冨瓧绗﹂兘蹇呴’锷犲弽鏂沧潬vim榛樿や娇鐢╩agic璁剧疆锛岃繖涓璁剧疆涔熷彲浠ュ湪姝e垯琛ㄨ揪寮忎腑阃氲繃 /m /M /v /V寮鍏充复镞跺垏鎹銆备緥濡傦细
1: //m.* # 镆ユ垒浠绘剰瀛楃︿覆2: //M.* # 镆ユ垒瀛楃︿覆 .* 锛堢偣鍙峰悗闱㈣窡涓鏄熷彿锛3: 4: //v(a.c){3}$ # 镆ユ垒琛屽熬镄刟bcaccadc5: //m(a.c){3}$ # 镆ユ垒琛屽熬镄(abc){3}6: //M(a.c){3}$ # 镆ユ垒琛屽熬镄(a.c){3}7: //V(a.c){3}$ # 镆ユ垒浠绘剰浣岖疆镄(a.c){3}$
鎺ㄨ崘浣跨敤榛樿ょ殑magic璁剧疆锛屽湪杩欑嶆儏鍐典笅锛屽父鐢ㄧ殑鍖归厤链夛细
1: //abc #镆ユ垒浠test寮濮嬬殑瀛楃︿覆 2: /abc/ #镆ユ垒浠test缁撴潫镄勫瓧绗︿覆 3: 4: $ 鍖归厤涓琛岀殑缁撴潫 5: ^ 鍖归厤涓琛岀殑寮濮 6: / 鍖归厤涓涓鍗曡瘝镄勫紑濮嬶纴渚嫔//abcEnter:镆ユ垒浠abc寮濮嬬殑瀛楃︿覆 7: / 鍖归厤涓涓鍗曡瘝镄勭粨𨱒燂纴渚嫔/abc/Enter:镆ユ垒浠abc缁撴潫镄勫瓧绗︿覆 8: 9: * 鍖归厤0鎴栧氭10: /+ 鍖归厤1鎴栧氭11: /= 鍖归厤0鎴1娆12: 13: . 鍖归厤闄ゆ崲琛岀︿互澶栦换镒忓瓧绗 14: /a 鍖归厤涓涓瀛楃15: /d 鍖归厤浠讳竴鏁板瓧 16: /u 鍖归厤浠讳竴澶у啓瀛楁瘝17: 18: [] 鍖归厤锣冨洿锛屽伥[abcd]s 鍖归厤tas tbs tcs tds19: /{} 閲嶅嶆℃暟锛屽俛/{3,5} 鍖归厤3~5涓猘20: /( /) 瀹氢箟閲嶅岖粍锛屽俛/(xy/)b 鍖归厤ab axyb axyxyb axyxyxyb ...21: /| 鎴栵纴濡傦细for/|bar 琛ㄧず鍖归厤for鎴栬卋ar22: 23: /%20c 鍖归厤绗20鍒24: /%20l 鍖归厤绗20琛
vi+鏂囦欢钖嶏纴鍙浠ュ垱寤轰竴涓鏂囦欢
鐢╟at+闂浠峰悕锛屽彲浠ユ煡鐪嬩竴涓鏂囦欢
鐢╟ut -f3+鏂囦欢钖嶏纴鍙浠ラ夋嫨鏂囦欢涓镄勭3娈靛瓧绗
杈揿叆鑻辨枃镄勫啋鍙:铹跺悗杈揿叆wq鍙浠ヤ缭瀛樻枃浠跺唴瀹瑰苟阃鍑
杈揿叆鑻辨枃镄勫啋鍙:铹跺悗杈揿叆q鍙浠ユ斁寮冧缭瀛桦苟阃鍑
杈揿叆鑻辨枃镄勫啋鍙/铹跺悗杈揿叆涓涓瀛楃︿覆锛屽彲浠ユ煡镓捐ュ瓧绗︿覆
濡傛灉浠ヤ笂缁忛獙甯鍒版偍锛岄夯鐑﹀湪宸︿笅瑙掔粰镣逛釜璧烇纴璋㈣阿锛