我有一个以 .gz 格式压缩的巨大日志文件,我只想读取它的第一行而不解压缩它以检查文件中最早日志的日期。
日志格式如下:
YYYY-MM-DD Log content asnsenfvwen eaifnesinrng
YYYY-MM-DD Log content asnsenfvwen eaifnesinrng
YYYY-MM-DD Log content asnsenfvwen eaifnesinrng
Run Code Online (Sandbox Code Playgroud)
我只想读取第一行中的日期,对于未压缩的文件,我会这样做:
read logdate otherstuff < logfile.gz
echo $logdate
Run Code Online (Sandbox Code Playgroud)
使用 zcat 花费的时间太长。
find
与find
SunOS 或 Solaris 上的命令相比,Linux 上的命令有很多选项。
我想使用这样的find
命令:
find data/ -type f -name "temp*" -printf "%TY-%Tm-%Td %f\n" | sort -r
Run Code Online (Sandbox Code Playgroud)
它在 Linux 机器上运行良好,但在-printf
SunOS 机器上没有相同的命令选项。我想以"%TY-%Tm-%Td %f\n"
格式自定义我的输出。
请为 SunOS 提出任何替代方案。
我想从 ksh 脚本中 3 个不同变量的变量中提取 3 个单词。我在 ksh93 上使用了这条线,效果很好:
read A B C <<< $line
在 ksh88 上运行上述命令时出现此错误:
syntax error at line ## : '<' unexpected
如何在 ksh88 上执行相同的操作?
我使用了以下这段代码
appcount_range="^[1-$APP_COUNT]$"
until [[ $APP_OPTION =~ $appcount_range ]]
do
echo "INVALID CHOICE! Please enter a valid option:"
read APP_OPTION
done
Run Code Online (Sandbox Code Playgroud)
它检查菜单选项是否输入正确。由于 APP_COUNT 是动态决定的,因此我无法对有效选项进行硬编码。这段代码在带有 ksh93 的基于 Linux 的服务器上完美运行,但相同的代码在带有 ksh88 的 Solaris 服务器上给出了一个语法错误说:
syntax error at line ## : '=~' unexpected
为什么=~
在 ksh88 中不是公认的操作员,我应该使用什么作为比较正则表达式的替代方法?