Text-Processing
如何用另一列中的字元串替換另一列指示的位置的一列中的字元
我對生物資訊學相當陌生(這是我的第一篇文章!),我會感謝一些讓我卡住的任務的幫助。
我有一個製表符分隔的數據表,其中包含三列:
AATTCTTGCA 4 [A/T] AATTCCTTCG 7 [C/T] AATTCAACAA 2 [T/C]
我想用第三列中的字元串替換第一列中第二列指示的位置的字元,以便輸出為:
AAT[A/T]CTTGCA AATTCC[C/T]TCG A[T/C]TTCAACAA
我現在正在學習各種教程,當我有一些(失敗的)命令時會更新我的文章
sed
/awk
。提前致謝!
以下
awk
命令應該完成任務:awk -F"\t" '{printf "%s%s%s%s",substr($1,1,$2-1),$3,substr($1,$2+1),ORS}' input.txt
該選項
-F
將欄位分隔符設置為TAB
。然後程序將為printf()
每一行列印(使用該函式)
- 欄位 1 的子字元串從開始到(但不包括)欄位 2 中指示的字元位置
- 欄位 3 中包含的字元串
- 欄位 1 的其餘部分,從欄位 2 中指示的字元位置開始
- “輸出記錄分隔符”,預設為換行符
從而有效地將指示的字元替換為欄位 3 的內容。
請注意,事後看來,這種顯式格式控制實際上是不必要的,程序可以縮寫為
awk -F"\t" '{print substr($1,1,$2-1) $3 substr($1,$2+1)}' input.txt
警告:程序假定欄位 2 中的字元位置總是合理的,即大於 0 且小於或等於欄位 1 的總長度。如果文件可能損壞,則需要進行更多錯誤檢查。