【问题标题】:Read line > compress it > remove line with bash读取行 > 压缩它 > 用 bash 删除行
【发布时间】:2019-10-24 22:18:08
【问题描述】:

几年前,我在使用方便的 bash oneliner。它正在做类似的事情:

cat file.log && rm -f file.log | gzip -9 > file.gz 

但它是逐行处理的。当驱动器上没有剩余空间时,我正在使用 in,我想在流中处理它。

我正在尝试回忆如何做到这一点,但这很难:)

【问题讨论】:

  • 做什么?那个命令肯定不是你在做的;它只是输出文件一次,将其删除,然后将rm(为空)的输出通过管道传输到gzip
  • 我知道,我搞砸了逻辑。仍在寻找正确的实施。我想过循环读取文件,但我想它可能更容易。 fe.: ` fielpath="/tmp/foo" 在读取 -r 行时声明 -i lineno=0;做回声“$line”| gzip -9 > "$filepath".gz let ++lineno sed -i "1 d" "$fielpath" done

标签: bash gzip


【解决方案1】:

答案是:

fielpath="/tmp/foo"
declare -i lineno=0
while read -r line; do
        echo "$line" | gzip -9 >> "$filepath".gz 
        let ++lineno
        sed -i "1 d" "$fielpath"
done < "$fielpath"

但仍在考虑如何将其作为一个方便的oneliner

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多