質問: 最初の列からのみ拡張子を削除する タブが2列に分かれているこのようなファイルがあります。 ensg00000242268.2 0.07563 ensg00000270112.3 0.09976 ensg00000167578.15 4.38608 ensg00000273842.1 0.0 ensg00000078237.5 4.08856 1列目の末尾から数値拡張子を削除したいので、出力は次のようになります。 ensg00000242268 0.07563 ensg00000270112 0.09976 ensg00000167578 4.38608 ensg00000273842 0.0 ensg00000078237 4.08856 単にsed 's/\..*$//'は最初の列の値のみを返し、フィールド区切り文字でawkを使用します'.'、awk -f'.' 10進数があるため、2番目の列からも値を削除します。同様の質問がここで回答されています: 列の拡張子を削除する まだ1列目だけから削除することはできません。
回答: awk解決策:_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 _