2016-04-07 30 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 

在包含+的行上,它将用您的文本替换结尾($),从而附加它。之后,行被打印。