これは私のデータセットです。
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
これが必要なすべてでない場合は、上記の内容が機能しない場合を含む、より代表的な入力/出力の例を提供するように質問を編集してください。