1

列 3 の最初の文字 (") を ("S) に置き換える必要がある入力ファイルがあります。

ファイル 1 :

1      2      "45554323"      p      b  
2      2      "34534567"      f      a  
3      3      "76546787"      u      b  
2      4      "56765435"      f      a

結果:

1      2      "S45554323"      p      b  
2      2      "S34534567"      f      a  
3      3      "S76546787"      u      b  
2      4      "S56765435"      f      a  

私は試した

awk '{gsub(substr($3,0,1),"\"S"); print}'

しかし、それはのように、開始時と終了時に私に与え$3ます。解決策を教えてください。S"S45554323"S

4

3 に答える 3

3

試してみてください:

awk 'BEGIN { OFS = "\t"; } { sub( /[[:digit:]]/, "S", $3 ); print }' infile

これにより、次の結果が得られます。

1       2       "S5554323"      p       b
2       2       "S4534567"      f       a
3       3       "S6546787"      u       b
2       4       "S6765435"      f       a

またはsed

sed -e 's/\("\)[0-9]/\1S/' infile
于 2012-10-10T08:27:37.500 に答える
0

別の解決策:

awk '{sub(" \"","\"S"); print}' file

結果-1:

awk '{sub(" \"","\"S"); print}' file
1      2     "S45554323"      p      b  
2      2     "S34534567"      f      a  
3      3     "S76546787"      u      b  
2      4     "S56765435"      f      a

結果-2:

awk '{sub(" \".","\"S"); print}' file
1      2     "S5554323"      p      b  
2      2     "S4534567"      f      a  
3      3     "S6546787"      u      b  
2      4     "S6765435"      f      a
于 2012-10-10T18:03:09.480 に答える
0

Perl ソリューション:

perl -naE '$F[2] =~ s/"/"S/; say join "\t", @F'

\t出力でスペースが予期される場合は、タブをスペースに置き換える必要がある場合があります。

于 2012-10-10T08:33:22.213 に答える