패키지 이름이 주어지고 깔끔하게 존재하도록 스크립트의 출력을 내림차순으로 정리합니다.

패키지 이름이 주어지고 깔끔하게 존재하도록 스크립트의 출력을 내림차순으로 정리합니다.

나는 제출했다보유하고 있는 패키지에서 테스트가 필요한 패치를 찾는 방법이 있습니까?작동하는 스크립트가 있습니다.

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'

업데이트 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 이해합니다. 오류 번호가 중복되지 않고 고유한지 확인하기 위해 순서가 사용되었습니다(목록이 한 번만 있음을 의미). 예제처럼 작동해야 하는데 그 반대가 작동하지 않는 이유를 실제로 모르겠습니다. 공유. 어쩌면 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따라서 두 번째 필드를 정렬하려면 최종 필드를 변경해야 합니다 .

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

관련 정보