打印特定行,如果它包含空格 - 替换或打印路径

时间:2016-08-08 09:41:43

标签: bash awk find

与标题中一样 - 我需要查找并阅读具有特定名称的所有文件,检查第7行是否有特定模式,如果找到 - 打印路径或更换行。
我的管道或awk的exec输出有问题。
find . -name "meta" -exec awk 'NR==7 && /T/' {} \;

如何管道输出此命令,或在其上使用-exec?

1 个答案:

答案 0 :(得分:2)

更改Awk脚本以打印文件名。

newRequest.setHeader('Authorization','XXX');
newRequest.setHeader('Content-Type','XXX');
newRequest.setHeader('CustomHeader','Customparameter');

或者使用退出代码将结果发送回find ... -exec awk 'NR==7 && /T/ { print FILENAME }' {} \;

find

如果文件太短,您需要注意具有相同的退出代码;这就是为什么我在发现匹配时使用略有反直觉的非零(失败)退出代码的原因。

如果你想用匹配替换该行,find ... -exec awk 'NR==7 { exit($0~/T/) }' () \; -o -ls 可能更容易和更便携,但GNU Awk也有sed -i选项。

--inline

请注意,* BSD平台上需要find ... -exec sed -i '7s/.*T.*/foobar/' {} \; ,包括OSX(即sed -i '' '7s...选项需要强制选项参数;传递空字符串以不备份文件。)