亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 4095 | 回復(fù): 11
打印 上一主題 下一主題

文本替換的問題 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-07-02 16:13 |只看該作者 |倒序?yàn)g覽
3可用積分
有兩個文件,一個是替換字符的字典文件X,如下所示:
惣擔(dān)
?椷
鸖嬌
?嶈
噴姅
鷆丠
嘦俀
鹔偒
鷽丠
?婌
?孠
塩嬈
一個文件是需要替換的文件Y。內(nèi)容如下:
惣擔(dān)杮-2G    C    OPS塩嬈晹    AD    惣擔(dān)杮。。。。。。
需要編寫個shell將X文件的每行第一個字符在Y文件中所有出現(xiàn)的地方替換成X文件的第二個字符。謝謝。。

最佳答案

查看完整內(nèi)容

看了你的shell,首先取第幾個字符不用cut,如果你是bash,可以使用下列方式a='abcd"echo ${a:0:2} ==> abecho $(a:2:2} ==> cd第二,你每取一行就調(diào)用sed 修改Y文件,這樣會多次掃描Y文件(掃描次數(shù)為X行數(shù)),效率太低,建議取得第一\第二字符后使用echo "s/${T1}/${T2}/g" >> tempfile的方式,將所有的修改命令保存成臨時文件,循環(huán)結(jié)束后,通過sed -f tempfile Y > Y.new的方式一次性修改Y文件

論壇徽章:
0
2 [報告]
發(fā)表于 2008-07-02 16:13 |只看該作者
原帖由 zgl90k 于 2008-7-2 16:43 發(fā)表
X文件中的第一個字符都不是空的,可能是顯示的原因,我們看到的都是亂碼。
還有我寫的shell,sed 's/$T1/$T2/g' Y.txt > temp.txt 沒有發(fā)揮作用,是怎么回事。
一個替換都沒做。

看了你的shell,首先取第幾個字符不用cut,如果你是bash,可以使用下列方式
a='abcd"
echo ${a:0:2}   ==> ab
echo $(a:2:2}   ==> cd

第二,你每取一行就調(diào)用sed 修改Y文件,這樣會多次掃描Y文件(掃描次數(shù)為X行數(shù)),效率太低,建議取得第一\第二字符后使用
echo "s/${T1}/${T2}/g" >> tempfile的方式,將所有的修改命令保存成臨時文件,循環(huán)結(jié)束后,通過sed -f tempfile Y > Y.new的方式一次性修改Y文件

論壇徽章:
0
3 [報告]
發(fā)表于 2008-07-02 16:19 |只看該作者
亂碼,看不清楚內(nèi)容.如果你的替換沒有重復(fù)的話,最簡單的辦法就是把x文件每一行改成如下格式
s/字符1/字符2/g,然后保存成chang.sed,用sed命令調(diào)用來修改Y文件
sed -f chang.sed Y > Y.new

論壇徽章:
0
4 [報告]
發(fā)表于 2008-07-02 16:21 |只看該作者
X文件是不能更改的。

論壇徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年紀(jì)念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役紀(jì)念章
日期:2022-04-24 14:33:24
5 [報告]
發(fā)表于 2008-07-02 16:29 |只看該作者
“將X文件的每行第一個字符在Y文件中所有出現(xiàn)的地方替換成X文件的第二個字符”?X文件的第二行不是只有一個字嗎,怎么替換?

論壇徽章:
0
6 [報告]
發(fā)表于 2008-07-02 16:29 |只看該作者
下面是我自己寫的shell
#!/bin/sh
while read TEMP
do
      T1=$(echo $TEMP | cut -c 1 )
      T2=$(echo $TEMP | cut -c 2)
      sed 's/$T1/$T2/g' Y.txt > temp.txt
      mv temp.txt MIPB2010.txt
done < X.txt

可是sed 's/$T1/$T2/g' Y.txt > temp.txt 沒有發(fā)揮作用,是怎么回事。

論壇徽章:
5
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亞洲杯之朝鮮
日期:2015-03-13 22:47:33IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-01-09 06:20:00IT運(yùn)維版塊每周發(fā)帖之星
日期:2016-03-07 16:27:44
7 [報告]
發(fā)表于 2008-07-02 16:30 |只看該作者

回復(fù) #1 zgl90k 的帖子

try:

  1. sed -f <(sed 's/^\(..\)\(..\).*/s\/\1\/\2\/g/' X) Y
復(fù)制代碼


原文件:
$ head X Y
==> X <==
惣擔(dān)
?椷
鸖嬌
?嶈
噴姅
鷆丠
嘦俀
鹔偒
鷽丠
?婌

==> Y <==
惣擔(dān)杮-2G    C    OPS塩嬈晹    AD    惣擔(dān)杮。。。。。。

結(jié)果:
$ sed -f <(sed 's/^\(..\)\(..\).*/s\/\1\/\2\/g/' X) Y
擔(dān)擔(dān)杮-2G    C    OPS嬈嬈晹    AD    擔(dān)擔(dān)杮。。。。。。

[ 本帖最后由 blackold 于 2008-7-2 16:43 編輯 ]

論壇徽章:
5
2015年辭舊歲徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亞洲杯之朝鮮
日期:2015-03-13 22:47:33IT運(yùn)維版塊每日發(fā)帖之星
日期:2016-01-09 06:20:00IT運(yùn)維版塊每周發(fā)帖之星
日期:2016-03-07 16:27:44
8 [報告]
發(fā)表于 2008-07-02 16:32 |只看該作者

回復(fù) #5 zgl90k 的帖子

應(yīng)該將MIPB2010.tx 改為Y.txt
另外你沒有cut對。

[ 本帖最后由 blackold 于 2008-7-2 16:34 編輯 ]

論壇徽章:
0
9 [報告]
發(fā)表于 2008-07-02 16:34 |只看該作者
X中
?婌
?孠
前面都是空的,轉(zhuǎn)成那個?

論壇徽章:
0
10 [報告]
發(fā)表于 2008-07-02 16:40 |只看該作者
原帖由 zgl90k 于 2008-7-2 16:21 發(fā)表
X文件是不能更改的。

看貼不看全,都叫你保存成change.sed了,你還不能更改
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP