2013-02-07 163 views
1

我有一個包含數千行的文本文檔文件。每行看起來像下面sed文本替換

141.132.86.86,53240,203.178.142.200,80,6,550,22425,1089,1630060,40,40,453,17,52,1496,1500,61,14,11578,220465,33191,11,5649,230153,23516,6356945,6356945,6356945,6356945,0,0,0,0,0,550,22425,1089,1630060,1,2,0,0,22012,43572,0 

我想知道如果我可以使用sed來替換/更改特定列的值。 (列以逗號分隔)。

例如,如果我需要分別從80和6改變第四和第五列的值轉換成1和2

要注意的是,對於不同的行值是不同的。我需要更改特定列的值。

感謝您的關心提前感謝您的好意。

+0

你是什麼意思「不同線的價值是不同的」? – placeybordeaux

回答

0

純猛砸

#!/bin/sh 
IFS=, read -a ca < a.txt 
ca[3]=1 
ca[4]=2 
IFS=, read cs <<< "${ca[*]}" 
echo $cs > a.txt 
0

桑達:

sed 's/\(\(.*,\)\{3\}\)80,6,\(.*\)/\11,2,\3/g' 

awk中並沒有設計就地編輯的東西。但它提供了現場編輯的完美支持,您可以使用它:

awk 'BEGIN {FS=","} {OFS=","} {if($4 = 80) $4=1;if($5 = 6) $5=2;print}' input.txt > output.txt && mv input.txt input.txt.old && mv output.txt input.txt