列の修正

列の修正

これは私のデータセットです。

chr1_KI270706v1_random,153401,rs867658023,chr1_KI270706v1_random_153401
chr1_KI270706v1_random,154751,rs1030747857,chr1_KI270706v1_random_154751
chr1_KI270706v1_random,156703,rs900345029,chr1_KI270706v1_random_156703
chr1_KI270706v1_random,156856,rs576837150,chr1_KI270706v1_random_156856

私は実際に次のように見えたいです。

chr1,153401,rs1867658023,chr1_153401

_KI_randomデフォルトでは、1列と4列の追加値を削除したいと思います。このコマンドを試しましたが、目的の結果が得られませんでした。

awk 'NR >1 {split($1, array, "_"); print array[1] "_" array[2]; split($2, array, "_"); print array[1] "_" array[2]}' outfile > rsid_final1.csv

ベストアンサー1

これは個々の行を単に置き換えるだけなので、sedを使用します。

$ sed 's/_KI[^_,]*_[^_,]*//g' file
chr1,153401,rs867658023,chr1_153401
chr1,154751,rs1030747857,chr1_154751
chr1,156703,rs900345029,chr1_156703
chr1,156856,rs576837150,chr1_156856

ただし、必要に応じてawkを使用して同じことを行うこともできます。

$ awk '{gsub(/_KI[^_,]*_[^_,]*/,"")} 1' file
chr1,153401,rs867658023,chr1_153401
chr1,154751,rs1030747857,chr1_154751
chr1,156703,rs900345029,chr1_156703
chr1,156856,rs576837150,chr1_156856

これが必要なすべてでない場合は、上記の内容が機能しない場合を含む、より代表的な入力/出力の例を提供するように質問を編集してください。

おすすめ記事