2013-04-25 93 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版本可能会失败。