2016-04-07 28 views
0

我正在嘗試在bashecho中搜索一個字符串,其中包含+字符的字符串和一些文本is a special case。代碼確實運行,但我在輸入文件中顯示了兩行。謝謝:)bash中搜索特定字符和顯示行的代碼行

慶典

#!/bin/bash 

printf "Please enter the variant the following are examples" 
echo " c.274G>T or c.274-10G>A" 

printf "variant(s), use a comma between multiple: "; IFS="," read -a variant 

for ((i=0; i<${#variant[@]}; i++)) 
do printf "NM_000163.4:%s\n" ${variant[$i]} >> c:/Users/cmccabe/Desktop/Python27/input.txt 
done 
awk '{for(i=1;i<=NF;++i)if($i~/+/)print $i}' input.txt 
echo "$i" "is a special case" 

input.txt中

NM_000163.4:c.138C>A 
NM_000163.4:c.266+83G>T 

所需的輸出(此行包含+它)

NM_000163.4:c.266+83G>T is a special case 

編輯:

看起來像我需要escape the +,這是我的問題的一部分

回答

1

你可以改變你的awk腳本,如下所示並擺脫回聲。

$ awk '/+/{print $0,"is a special case"}' file 

NM_000163.4:c.266 + 83G> T是一個特例

+0

謝謝兩位非常:)。 – Chris

1

據我理解你的問題,你可以用一個sed命令做到這一點:

sed -n '/+/ {s/$/is a special case/ ; p}' input.txt 

在包含+的行上,它將用您的文本替換結尾($),從而附加它。之後,行被打印。