1

何千行もあるテキスト ドキュメント ファイルがあります。各行は以下のようになります

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 を使用して特定の列の値を置換/変更できるかどうか疑問に思っています。(列はコンマで区切られます)。

たとえば、4 列目と 5 列目の値をそれぞれ 80 と 6 から 1 と 2 に変更する必要があるとします。

異なる行の値は異なることに注意してください。特定の列の値を変更する必要があります。

事前にご配慮いただき、ありがとうございました。

4

2 に答える 2

0

純粋な Bash を使用

#!/bin/sh
IFS=, read -a ca < a.txt
ca[3]=1
ca[4]=2
IFS=, read cs <<< "${ca[*]}"
echo $cs > a.txt
于 2013-02-07T06:14:46.717 に答える
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
于 2013-02-07T06:25:25.960 に答える