2014-12-19 2 views
0

여러 줄의 파일에서 ID를 가져 와서 sed를 사용하여 일부 정보를 추가하고 싶습니다. 다른 것을 사용하고 싶지 않습니다. 두 번째 부분 아무튼Sed는 두 개의 일치 항목을 출력하고 정보로 바꿉니다.

grep ">" 19F_4414*.aln | sed -e 's/^.*>/pathfind -t lane -id /1; s/ .*//5' 

첫 번째 대체 작동하지만 : 나는 인쇄 할

19F_4414_2.aln:>tai19F_14 Taiwan19F_14 

:

pathfind -t lane -id tai19F_14 -f fastq -l . 

를 지금까지 내가 가지고 는 예를 들어 원래 라인처럼 보인다 '티. 별표를 추가하면 행의 끝 부분이 대체되지는 않지만 단일 전체 정지는 한 문자 만 대체합니다. 이유를 알려 주시면 어떻게 해결할 수 있습니까?

+0

처럼 시도 할 것입니다 무엇이든 후 다음 정적 문자열로 '-id -t 차선을 pathfind'? 내가 맞습니까? – SMA

답변

1

나는 당신이 필요 그래서이

sed 's/.*aln:>\(\S*\).*/pathfind -t lane -id \1 -f fastq -l/g' 
+0

"\ S"는 공백 앞에있는 ">"의 모든 숫자와 일치하는 메타 문자입니다. – repzero

0

이 작동 :

sed -e 's/^.*>/pathfind -t lane -id /1; s/ [^ ]*$/ -f fastq -l ./' 

경우 [^ ]*$ 일치 행의 끝 ($) 전에 직접 아닌 모든 공간.

1

당신은 할 수 있습니다 :

sed 's/>\([^[:blank:]]*\).*$/pathfind -t lane -id \1 -f fastq -l ./' 19F_4414*.aln 
pathfind -t lane -id tai19F_14 -f fastq -l . 
+0

'sed -n'과's /// p'는 요청을 처리합니다. 나는 손님이 * 원본 * 줄은 사실 grep 구문의 결과이며 파일의 실제 원래 줄이 아님을 알려드립니다. – NeronLeVelu

0

sed -r 's/^.*>(.*) .*/pathfind -t lane -id \1 -f fastq -l/ 파일 이름을. 공간까지> 다음 정적 문자열 '-f fastq -l'

관련 문제