2013-01-23 71 views
0

我想用其他字符替換一些字符串(例如,「GG」與「GGX」,「GG」與「GGX」,「FG」與「FGX」等)在使用shell命令的大csv文件的第一列中。csv文件用三個字符替換兩個字符串

我知道我需要像

big.csv shell_commands big.csv

,但我不知道的awk或sed的

回答

0

使用SED,以取代 「GG」 的所有實例「 GGX」在big.csv會是什麼樣子:

sed 's/^GG/GGX/g' big.csv >big_translated.csv 

如果您要更換多模式,您可以通過矽分離的Sed使用多個替換命令離子研究。

sed 's/^GG/GGX/g; s/^FG/FGX/g' big.csv >big_translated.csv 

^字符表示行首,並確保我們只能編輯CSV的第一個字段。

+0

謝謝,我想這樣做是爲了在CSV第一列串,也將「S/GG/GGX/G」替換「GG」? – Yoda

+0

我想我需要awk – Yoda

+0

's/GG/GGX/g'會將「GG」轉換爲「GGX」。 's/GG/GGX/g'會將「GG」轉換爲「GGX」。 – cmh

0
awk 'BEGIN{ r["GG"] = "GGX"; r["FG"] = "FGX" } 
    { for(k in r) if(gsub(k, r[k], $1) break } 1' input-file 

中斷是爲了防止多重替換。

0

試試這個(前提是你有一個字符串的單次數)

awk '{sub("GG","GGX",$0); sub("FG","FGX",$0); print}' temp.txt

+0

這是偉大的,當我在外殼中使用它時,它的作品。但是,我無法讓它作爲R系統命令運行。我嘗試使用shQuote(),沒有喜悅。謝謝您的幫助。 – Yoda

+0

好的,我把它用在R上,有很多零件發送到paste()。但是,我將「FGP」等字符串更改爲FGXP。有沒有辦法解決這個問題,並在該字段中包含一個if語句。 – Yoda

0

這個怎麼樣?

sed -i "s/^\(..\),/\1X,/" big.csv 

或者,如果你到了那裏的一些空間這一點:

sed -i "s/^\([^ ][^ ][ ]*\),/\1X,/" big.csv