使用存储一些数据的文件,我想读入这些文件并在其他文件中打印与模式匹配的 5 条特定行。但如果文件不正确,我想打印 5 行包含任何消息(例如“错误”),以区分并知道哪个文件好或不好。
这是我的做法:
if grep -q 'PATTERN' outputfile;
then
grep --color 'ANOTHER_PATTERN' outputfile > tmpfile
else
printf 'ERROR %.0s\n' {1..5} > tmpfile
fi
所以,我的问题是该命令如何printf 'ERROR %.0s\n' {1..5}真正起作用?代码实际上可以工作,但我不习惯使用我不完全理解的命令。
我知道%s用于打印字符串,\n用于换行,但我不知道为什么我们需要使用.0s. 我想在“错误”旁边打印一个空格而不是数字(1,2..,5)是一个“技巧”,因为如果我只是使用
%s\n {1..5}我会得到:
ERROR 1
ERROR 2
...
依此类推,直到 5。我的第二个问题是:如何在ERROR不使用此消息的情况下打印 5 行消息?提前感谢您的任何提示。