欠損値に文字列を挿入する

欠損値に文字列を挿入する

受け取ったテキスト ファイルの編集で、一部の行の特定の列に値が欠落していたために問題が発生しました。たとえば、ファイルは次のようになります (大体)。

ID10    dad    prbM    ATGD
ID11    mom    prbF    CDSF
ID12    mom        CGDS
ID13    dad    prbF    FSDD
ID14    mom        FDSF

ご覧のとおり、prbすべてのエントリに が提供されない場合があります。エントリが存在しない場合は、タブ区切りが 2 つあることがわかりました。タブの間に文字列を挿入する方法はありますか? たとえば、次のようになります。

ID10    dad    prbM    ATGD
ID11    mom    prbF    CDSF
ID12    mom    none    CGDS
ID13    dad    prbF    FSDD
ID14    mom    none    FDSF

答え1

ではawk、フィールドが実際にタブで区切られていると仮定します。

awk -F '\t' -v OFS='\t' '$3 == ""{$3 = "none"};1' input.txt

これ:

  1. 入力フィールドの区切り文字を単一のタブ(-F '\t')に設定します
  2. 出力フィールドの区切り文字をタブ(-v OFS='\t')に設定します
  3. 3番目のフィールドが空かどうかをチェックし($3 == "")、空の場合は文字列に設定します。"none"
  4. そして、常に行 ( 1) を出力します。

関連情報