小编Pra*_*kar的帖子

从 .gz 压缩文件中读取第一行而不解压缩整个文件

我有一个以 .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 花费的时间太长。

logs gzip shell-script

17
推荐指数
3
解决办法
3万
查看次数

对于 SunOS,Linux 上的 `find` 命令是否有其他替代方法?

findfindSunOS 或 Solaris 上的命令相比,Linux 上的命令有很多选项。

我想使用这样的find命令:

find data/ -type f -name "temp*" -printf "%TY-%Tm-%Td %f\n" | sort -r
Run Code Online (Sandbox Code Playgroud)

它在 Linux 机器上运行良好,但在-printfSunOS 机器上没有相同的命令选项。我想以"%TY-%Tm-%Td %f\n"格式自定义我的输出。

请为 SunOS 提出任何替代方案。

solaris find shell-script

10
推荐指数
1
解决办法
1571
查看次数

ksh88 中是否有 Here-Strings?

我想从 ksh 脚本中 3 个不同变量的变量中提取 3 个单词。我在 ksh93 上使用了这条线,效果很好:

read A B C <<< $line

在 ksh88 上运行上述命令时出现此错误:

syntax error at line ## : '<' unexpected

如何在 ksh88 上执行相同的操作?

ksh here-string

6
推荐指数
2
解决办法
897
查看次数

为什么 =~ 运算符在 Solaris 上与正则表达式进行比较时会出现语法错误

我使用了以下这段代码

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 中不是公认的操作员,我应该使用什么作为比较正则表达式的替代方法?

linux solaris ksh shell-script regular-expression

1
推荐指数
1
解决办法
479
查看次数