2013-04-25 95 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 2013-04-25 05:31:39

回答

2
sed '/<\/*url>/!d;s///g' 
  • <\/*url>結束標記
  • 刪除不具有此
  • 然後刪除該模式

的所有情況下你的榜樣行的比賽都開始與,它可能看起來像這樣

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

謝謝你的工作。最後一件事,它仍然會在url後面的下一行。你知道我將如何擺脫這種情況,以便下一篇文章能夠緊隨其後。 – 2013-04-25 23:10:13

+0

或者可能是我如何添加下一行。我正在使用printf,所以我假設這是什麼導致它去下面的文本的下一行。還有什麼我應該用來追加文本在行尾,而不是在一個新的行? – 2013-04-25 23:28:18

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版本可能會失敗。