在bash中搜索特定字符和显示行的行

时间:2016-04-07 18:19:44

标签: bash awk

我正在尝试在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 +,这是我问题的一部分

2 个答案:

答案 0 :(得分:1)

据我了解您的问题,您可以使用单个sed命令执行此操作:

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

在包含+的行上,它会将结尾($)替换为您的文字,然后附加它。之后会打印这条线。

答案 1 :(得分:1)

你可以改变你的awk脚本,如下所示,摆脱回声。

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

NM_000163.4:c.266 + 83G&gt; T是特例