我正在尝试在bash
和echo
中搜索包含+
字符的字符串的行,其中包含一些文字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 +
,这是我问题的一部分
答案 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是特例