値が欠落している文字列の挿入

値が欠落している文字列の挿入

一部の行の特定の列に一部の値が欠落しているため、受信したテキストファイルを編集できません。たとえば、ファイルは(ほとんど)次のようになります。

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. そして常にline(1)を印刷してください。

関連情報