清理脚本的输出,使其降序,给出包名称并干净地存在

清理脚本的输出,使其降序,给出包名称并干净地存在

我提交了有没有办法从您拥有的软件包中找到需要测试的补丁?我得到了一个有效的脚本 -

for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u); do bts select source:${source} tag:patch; done

现在,当命令起作用时 - 输出令人困惑,这几行是输出 -

[$] for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u); do bts select source:${source} tag:patch; done          

781691
725728
805989
677570
772688
823072

现在如果有办法的话那就太好了——

A。以降序方式列出列表,以便可以比早期的补丁先了解/理解/尝试较新/令人兴奋的补丁。

b.应该列出它所属的包 -

例如 823072 属于 acpi-support ,它有一个补丁或 805989 属于accountsservice 。有包名会好很多。

C。最后,每次列表完成后(或者是吗?),它应该退出到命令提示符。如果由于某种原因,网络连接中断或没有发现任何错误,它应该通过声明来说明可能的原因。

是否可以 ?我在 zsh 上并使用 oh-my-zsh,所以一切都是从 ~/.oh-my-zsh 操作的

更新 - 我已经做了类似的事情来列出本地文件,但不知道如何实现上述目标 -

┌─[shirish@debian] - [~] - [6266]
└─[$] alias ll

ll='ls -lt --color=auto --time-style=long-iso'

更新 2 - 我暂时尝试过sort,不知道sed

我看见http://www.thegeekstuff.com/2013/04/sort-files/

http://www.howtoing.com/sort-command-linux/

并特别看到——

以下排序命令以相反的顺序对测试文件中的行进行排序,并从排序的输出中删除重复的行。

$ 排序 -r -u 测试 5 4 2 1

我尝试在共享脚本中使用相同的内容,但它给出了完全不同的输出 -

┌─[shirish@debian] - [~] - [6273]
└─[$] for source in $(dpkg-query --show -f '${source:Package}\n' | sort -r -u); do bts select source:${source} tag:patch; done       
538069
831900
779566
622933
691638
776663
419233

AFAI 理解它,排序已用于确保错误编号不重复并且是唯一的(意味着列表仅一次),并不真正知道为什么反向在应该像共享示例一样工作时不起作用。也许与 zsh 有关,或者我写得不正确:(。

同时查找 sed 看看我是否能理解一些东西。

更新 3 - 由于某种原因,这似乎在 zsh 中不起作用,仅使用 sed 位 atm -

┌─[shirish@debian] - [~] - [6312]
└─[$] cat find-interesting-patches.sh

for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u) do bts select source:${source} tag:patch | sed "s/^/${source} /g" done

和 -

┌─[shirish@debian] - [~] - [6313]
└─[$] ll -h find-interesting-patches.sh

-rwxr-xr-x 1 shirish shirish 141 2016-11-23 23:56 find-interesting-patches.sh

所以有执行权限

尝试运行它,我得到 -

┌─[shirish@debian] - [~] - [6315]
└─[$] ./find-interesting-patches.sh

./find-interesting-patches.sh: 1: ./find-interesting-patches.sh: Syntax error: "|" unexpected

有什么想法这里可能有什么问题吗?

答案1

从...开始

for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u); do bts select source:${source} tag:patch; done

对输出进行排序涉及另一种使用sort, 以相反的顺序对整个输出进行数字排序:

for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u); do bts select source:${source} tag:patch; done \
| sort -n -r

${source}要显示(源)包名称以及错误编号,最简单的选择是在正确的位置添加(源包),bts每次运行时处理它的输出:

for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u)
do bts select source:${source} tag:patch | sed "s/^/${source} /g"
done

这输出以下形式的行

linux 845422

所以我们需要更改finalsort以对第二个字段进行排序:

for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u)
do bts select source:${source} tag:patch | sed "s/^/${source} /g"
done | sort -k2,2n -r

在一行上

for source in $(dpkg-query --show -f '${source:Package}\n' | sort -u); do bts select source:${source} tag:patch | sed "s/^/${source} /g"; done | sort -k2,2n -r

相关内容