2016-04-07 3 views
0

Я пытаюсь написать строку поиска в 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 + и это часть моей проблемы

ответ

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 

В строках, содержащих +, он заменяет ваш текст ($), добавляя его. После этого строка печатается.

Смежные вопросы