打印输出的第一个字

打印输出的第一个字

我一直在环顾四周,但没有找到我正在尝试的东西。我不得不说我对 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

相关内容