特定の列の最後のn文字を削除する方法

特定の列の最後のn文字を削除する方法

ファイルがあります。

had my.file
    Ha1_00044012__C 1 51035805 10.35639322
    Ha1_00045184__C 1 86676829 10.07929888
    Ha1_00045056__C 1 150178524 19.44076068
    Ha10_00000491__C 10 73473488 10.6038893
    Ha10_00000577__C 10 78976728 12.45451149
    Ha10_00002949__C 10 113658711 14.94370396
    Ha10_00001805__C 10 220068670 10.87452401

最初の列から最後の3文字 "__C"を削除したいと思います。頑張った

awk '{gsub(/[__c ]/,"",$1)}3'

ただし、最初の列の「_」はすべて削除されます。私が望む出力は次のようになります。

head desired
Ha1_00044012 1 51035805 10.35639322
Ha1_00045184 1 86676829 10.07929888
Ha1_00045056 1 150178524 19.44076068
Ha10_00000491 10 73473488 10.6038893
Ha10_00000577 10 78976728 12.45451149
Ha10_00002949 10 113658711 14.94370396
Ha10_00001805 10 220068670 10.87452401

ベストアンサー1

周囲の角括弧は[__c ]次のとおりです。置く一つではなく注文する性格。これを使用すると、次gsubのすべての_c(小文字、コメント)、および空白文字と一致して置き換えられます。$1

__C以下を使用して実行できるシーケンスの単一インスタンス(大文字)を置き換えたいと思います。sub(/__C/,"",$1)

大文字と小文字を区別しない場合は、次のようにします。/__[Cc]/

おすすめ記事