私は周りを見回しましたが、私が試しているものを見つけることができませんでした。 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
すべてを1行として処理し、 '\ n'をプレーン文字として扱います。これにより、区切り文字を含む最初の白い文字(最初の例)または「/」(2番目の例)の後のすべての内容が削除されます。
答え3
あなたは次のように言及しましたgrep
。
apt list --upgradable | grep -o "^.*\/" | cut -d'/' -f1
awk
私の速度と比べるとどうなるかわかりませんsed
。