2013-04-25 3 views
0

grep의 출력 텍스트를 어떻게 조작 할 수 있습니까?awk로 텍스트를 조작하는 방법은 무엇입니까?

는 지금은 명령을 사용하고 있습니다 :

grep -i "<url>" $file >> ./txtFiles/$file.txt 

이하고자 다음과 같은 결과물을 출력 할 것

<url>http://www.simplyrecipes.com/recipes/chicken_curry_salad/</url> 

하고 다음 텍스트가 다음 행으로 이동합니다

.

어떻게하면 <url></url>을 없애고 끝에서 다음 줄로 이동하지 못하게 할 수 있습니까?

+0

은 무엇을 없애? 어쩌면 당신은 tr "\ n" "" – lc2817

답변

2
sed '/<\/*url>/!d;s///g' 
  • <\/*url> 경기가 모두 시작하고
  • 는 다음 예를 통해이 패턴

의 모든 경우를 제거 해달라고 행을 삭제 종료 태그, 그것은 다음과 같이 보일 수 있습니다

sed '/<\/*url>/!d;s///g' $file >> ./txtFiles/$file.txt 
+0

이 경우 파이프에 새 줄 문자를 제거하고 싶습니다. 감사합니다. 한가지 마지막으로, URL 다음 줄로 이동합니다. 당신은 내가 다음 텍스트가 바로 뒤를 따라갈 수 있도록 이것을 제거 할 수있을 것입니다. –

+0

또는 어쩌면 다음 줄을 추가하는 방법입니다. 나는 printf를 사용하고 있기 때문에 그것이 다음 텍스트에 대한 다음 줄로 들어가는 것으로 가정하고있다. 새 줄 대신에 줄 끝 부분에 텍스트를 추가해야하는 다른 것이 있습니까? –

0

단일 명령 :

sed -in '/<url>/ { s|<url>\(.*\)</url>|\1| ; p ; }' INPUT > OUTPUT 

또는 AWK와 :

awk -F "</?url>" '/<url>/ { print $2 }' INPUT > OUTPUT 

: 하나 개 이상의 <url>...</url> 패턴이 한 줄에 발생하는 경우 모두 당신에게 잘못된 출력을 줄 수 있습니다. <url>...</url> 어떤 파이프 (|) 문자가 포함 된 경우 sed 버전은 실패 할 수 있습니다.

관련 문제