如何用awk操作文本?

时间:2013-04-25 05:24:44

标签: text awk grep text-manipulation

我如何能够操作grep的输出文本。

现在我正在使用命令:

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

这将输出如下内容:

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

然后下一行文字将转到下一行。

我怎样才能摆脱<url></url>并阻止它转到最后一行。

2 个答案:

答案 0 :(得分:2)

sed '/<\/*url>/!d;s///g'
  • <\/*url>匹配开始和结束标记
  • 删除没有此内容的行
  • 然后删除此模式的所有案例

使用您的示例,它可能看起来像这样

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

答案 1 :(得分:0)

单个命令:

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

或者使用awk:

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

注意:如果在一行上出现多个<url>...</url>模式,两者都可能会给您无效输出。如果sed包含任何管道(<url>...</url>)字符,则|版本可能会失败。