출력의 첫 번째 단어를 인쇄합니다.

출력의 첫 번째 단어를 인쇄합니다.

나는 주위를 둘러보았지만 내가 무엇을 시도하고 있는지 찾지 못했습니다. 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.

관련 정보