Bash使用awk不良输出

时间:2015-08-11 19:48:12

标签: bash awk

我正在尝试编写一个脚本,在目录或文件中突出显示TODO注释。 我一直遇到的问题是我正在尝试使用以下输出格式

  

TODO:这是我需要做的 - >例如-file.txt的:行号

解析器不会抓取注释,因为TODO之后的':'。

#!/bin/bash 
echo "TODO highlighter..." 
grep -Hnr --color 'TODO' $* |  awk -F: '{print $'${@:3}'" -> "$1 ":" $2}'

这是我用来测试的文件(todo-example.java):

//TODO: Bobo region Description
//todo this is good but needs new name
//TODO- John fix 

这是输出:

//output 
todo-example.java:4://TODO: Bobo region Descriptiontodo-example.java:4
todo-example.java:29:   //TODO- John fix todo-example.java:29

//desired output 
//TODO: Bobo region Description -> todo-example.java:4
//TODO- John fix -> todo-example.java:29

我尝试过更改参数,但似乎无法获得$ 3到$ N的预期结果。感谢。

1 个答案:

答案 0 :(得分:3)

您只需在脚本中添加以下行:

0

要突出显示awk '/TODO/ { print FILENAME": "NR" -> "$0 }' "$@" ,您可以轻松地重复使用grep命令:

TODO