最初の列からのみ拡張子を削除する

最初の列からのみ拡張子を削除する

タブで区切られた2つの列を持つ次のファイルがあります。

 ENSG00000242268.2    0.07563
 ENSG00000270112.3    0.09976
 ENSG00000167578.15   4.38608
 ENSG00000273842.1    0.0
 ENSG00000078237.5    4.08856

最初の列の末尾から数値拡張子を削除したいので、出力は次のようになります。

 ENSG00000242268    0.07563
 ENSG00000270112    0.09976
 ENSG00000167578    4.38608
 ENSG00000273842    0.0
 ENSG00000078237    4.08856

単に最初の列の値のみを返し、sed 's/\..*$//'フィールド区切り文字'.'でawkを使用するとawk -F'.'小数点があるため、2番目の列の値も削除されます。

同様の質問に対する答えはここにあります: 列から拡張子を削除する

まだ最初の列だけを削除することはできません。

ベストアンサー1

アッ解決策:

awk -F'\t' '{sub(/\..+$/,"",$1)}1' OFS='\t' file
  • -F'\t'- フィールド区切り記号

  • sub(/\..+$/,"",$1)-.最初のフィールドで次の文字をすぐに削除します。

出力:

ENSG00000242268 0.07563
ENSG00000270112 0.09976
ENSG00000167578 4.38608
ENSG00000273842 0.0
ENSG00000078237 4.08856

または簡単に使用してくださいsed方法:

sed 's/\.[0-9]*//' file

おすすめ記事