나는 주위를 둘러보았지만 내가 무엇을 시도하고 있는지 찾지 못했습니다. grep, sed 및 awk에 대한 지식이 약간 부족하다고 말하고 싶습니다.
별칭이 있습니다.
alias upgradable='apt list --upgradable'
나에게 필요한 것을 얻습니다.
thunderbird/bionic-updates,bionic-security 1:68.4.1+build1-0ubuntu0.18.04.1 amd64 [upgradable from: 1:68.2.2+build1-0ubuntu0.18.04.1]
thunderbird-gnome-support/bionic-updates,bionic-security 1:68.4.1+build1-0ubuntu0.18.04.1 amd64 [upgradable from: 1:68.2.2+build1-0ubuntu0.18.04.1]
하지만 저는 제목인 첫 번째 단어만 알고 싶습니다. 많은 것을 시도했지만 실패했습니다.
어떻게 진행하나요?
답변1
첫 번째 것 이전의 모든 것을 인쇄하려면 다음을 /
사용할 수 있습니다 cut
.
alias upgradable='apt list --upgradable | cut -d'/' -f1
또는 awk
:
alias upgradable="apt list --upgradable | awk -F'/' '{print \$1}'"
답변2
모든 정규식은 d.
alias upgradable='apt list --upgradable | perl -pe "s|\s.*||" '
귀하의 출력 :
thunderbird/bionic-updates,bionic-security
또는
alias upgradable='apt list --upgradable | perl -pe "s|/.*||" '
귀하의 출력 :
thunderbird
perl -pe
모든 것을 한 줄로 처리하고 '\n'을 일반 문자로 처리합니다. 이렇게 하면 구분 기호를 포함하여 첫 번째 흰색 문자(첫 번째 예) 또는 "/"(두 번째 예) 뒤의 모든 내용을 삭제합니다.
답변3
당신은 다음과 같이 언급했습니다 grep
.
apt list --upgradable | grep -o "^.*\/" | cut -d'/' -f1
awk
나 의 속도와 비교하면 어떤지 모르겠습니다 sed
.