说我想搜索" ERROR"在一堆日志文件中。
我想为每个包含" ERROR"的文件打印一行。
在每一行中,我想打印最左边的日志文件路径,而#34; ERROR"在最右边。
我尝试使用:
printf "%-50s %d" $filePath $errorNumber
...但它并不完美,因为黑色控制台可能差异很大,文件路径有时可能很长。
只是为了眼睛的快乐,但我根本无法这样做。 任何人都可以帮我解决这个问题吗?
答案 0 :(得分:5)
使用set xdata time
set timefmt "%Y-%m-%d %H:%M"
set format x "%Y-%m-%d\n%H:%M"
set xtics 12*60*60 # draw tic labels every 12 hours
unset key
set ylabel "Tide level in feet"
plot "pineIslandSoundTides" u 1:3 with points, "" u 1:3:(stringcolumn(5)) with labels offset 0,-1
和 SELECT MONTH(dt_column) month_data, COUNT(*) month_count
FROM table
GROUP BY MONTH(dt_column);
ORDER BY month_count DESC;
:
bash
工作原理:
printf
是shell的终端宽度。
printf "%-$(( COLUMNS - ${#errorNumber} ))s%s" \
"$filePath" "$errorNumber"
通过在$COLUMNS
之后加printf
来保持对齐。所以-
打印“ foo ”,然后打印22个空格,然后“ bar ”。
%
使用printf "%-25s%s\n" foo bar
作为参数长度变量前缀,因此如果bash
,那么#
就是 3
花哨的版本,假设两个变量更长,而不是适合一列;如果是这样的话,可以根据需要将它们打印出来:
x=foo
广义到一个函数。语法为${#x}
或printf "%-$(( COLUMNS * ( 1 + ( ${#filePath} + ${#errorNumber} ) / COLUMNS ) \
- ${#errorNumber} ))s%s" "$filePath" "$errorNumber"
:
printfLR foo bar
测试:
printfLR < file