パッケージ名が与えられ、きちんと存在するようにスクリプトの出力を降順に整理します。

パッケージ名が与えられ、きちんと存在するようにスクリプトの出力を降順に整理します。

提出しましたお持ちのパッケージでテストが必要なパッチを見つける方法はありますか?動作するスクリプトがあります。

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

もう方法があればいいのに――

ㅏ。より新しく興味深いパッチが以前のパッチよりも先に知られ、理解され、試みられるようにリストを降順にします。

b. パッケージが属するパッケージをリストする必要があります。

たとえば、823072はパッチのあるacpi-supportに属し、805989はaccountserviceに属します。パッケージ名を持つ方がはるかに優れています。

氏。最後に、リストが完了するたびに(または完了しますか?)コマンドプロンプトで終了する必要があります。何らかの理由でネットワーク接続が中断された場合、またはエラーが見つからない場合は、考えられる理由を説明する説明を参照してください。

可能ですか?私はzshを使っていて、oh-my-zshを使っているので、すべてが~/.oh-my-zshで動作します。

更新 - ローカルファイルのリストと同様のことをしましたが、上記を達成する方法がわかりません。

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

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

Update 2 - 一時的に試してみましたが、sortよくわかりません。sed

私は見たhttp://www.thegeekstuff.com/2013/04/sort-files/また

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

そして特に見たら――

次のsortコマンドは、テストファイルの行を逆順に並べ替え、並べ替えられた出力から重複した行を削除します。

$sort -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理解しています。エラー番号が重複せず、一意であることを確認するために順序が使用されました(リストが1回しかないことを意味します)。例のように動作する必要がありますが、その逆が機能しない理由は実際にはわかりません。共有。おそらく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

sortしたがって、2番目のフィールドを並べ替えるには、最終フィールドを変更する必要があります。

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

おすすめ記事