【问题标题】:Bash script to sort input file before piping to while loop用于在管道到 while 循环之前对输入文件进行排序的 Bash 脚本
【发布时间】:2015-01-14 19:45:51
【问题描述】:

我有这个 bash 脚本:

while IFS='"' read -r a ip c
do
    echo "ip: $ip"
    whois "$ip" | grep netname
done < <(head -10 file.log)

如何在前十行被提取并移交给 while 循环之前对 file.log 文件进行排序(例如使用 sort -n -r)?

【问题讨论】:

  • head -10 file.log | sort -nr
  • sort -nr file.log | head -10

标签: linux bash sorting


【解决方案1】:

如果你想得到排序后的前 10 行,在使用 head 之前只需 sort 即可:

while IFS='"' read -r a ip c
do
    echo "ip: $ip"
    whois "$ip" | grep netname
done < <(sort file.log | head -10)
         ^^^^^^^^^^^^^^^

当然,应用您需要的 sort 标志。

【讨论】:

    【解决方案2】:

    使用这个命令,

    sort -nr file.log | head -10
    

    【讨论】:

    • 这将对前 10 行进行排序,而 OP 可能希望获得前 10 行
    猜你喜欢
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多