[英]Using awk in if statements
我有一個數據文件,看起來像這樣:
1 . 0 10109 AA AA
1 . 0 10123 C CCCT
1 . 0 10133 A AAC
1 . 0 10134 A ACAAC
1 . 0 10140 A ACCCTAAC
1 . 0 10143 C CTACT
1 rs144773400 0 10144 T TA
1 . 0 10146 AC A
1 . 0 10147 G C
以“。”為例。 在第二列中,我想用列1和4的合並輸出替換它,如下所示:
1 1:10109 0 10109 AA AA
1 1:10123 0 10123 C CCCT
1 1:10133 0 10133 A AAC
1 1:10134 0 10134 A ACAAC
1 1:10140 0 10140 A ACCCTAAC
1 1:10143 0 10143 C CTACT
1 rs144773400 0 10144 T TA
1 1:10146 0 10146 AC A
1 1:10147 0 10147 G C
我一直在嘗試使用if / then語句執行此操作...但是我知道我的語法錯誤,只是不確定如何錯誤。
if [$2 -eq "." /data/pathtofile]
then
awk '{print $1 ":" $4}'
else
awk '{print $2}' >> "/data/cleanfile"
fi
我想念什么?
您可以通過awk本身執行此操作。
awk -v FS="\t" -v OFS="\t" '$2=="."{$2=$1":"$4}{$1=$1}1' file
要么
$ awk '$2=="."{$2=$1":"$4}{$1=$1}1' file
1 1:10109 0 10109 AA AA
1 1:10123 0 10123 C CCCT
1 1:10133 0 10133 A AAC
1 1:10134 0 10134 A ACAAC
1 1:10140 0 10140 A ACCCTAAC
1 1:10143 0 10143 C CTACT
1 rs144773400 0 10144 T TA
1 1:10146 0 10146 AC A
1 1:10147 0 10147 G C
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.