San*_*dra 17 linux bash grep awk
我想从中获取数字rating作为输出
# nc localhost 9571
language:
language:en_ZA.UTF-8
language:en_ZW.UTF-8
session-with-name:Ubuntu Classic (No effects):gnome-session --session=2d-gnome
session-with-name:Ubuntu (Safe Mode):gnome-session -f --session=2d-gnome
session-with-name:Ubuntu Classic:gnome-session --session=classic-gnome
xsession:/etc/X11/Xsession
rating:94
Run Code Online (Sandbox Code Playgroud)
我可以这样做
# nc localhost 9571 | grep rating | cut -d: -f2
94
Run Code Online (Sandbox Code Playgroud)
但可以awk用来代替更简单的解决方案吗?
qua*_*nta 32
$ nc localhost 9571 | awk -F: '/rating/ { print $2 }'
Run Code Online (Sandbox Code Playgroud)
Sma*_*ger 14
Quanta 击败了我,但sed如果您愿意,我会提供一个变体:
nc localhost 9571 | sed -ne 's/^rating://p'
Run Code Online (Sandbox Code Playgroud)
尽管如此,MadHatter 所说的也是如此。您当前的解决方案非常合理。(虽然我会用 grep"^rating:"而不仅仅是单词来确保你只得到你想要的行。)
您也可以只使用外壳:
nc localhost 9571 |
while IFS=: read key val; do [[ $key = "rating" ]] && echo "$val"; done
Run Code Online (Sandbox Code Playgroud)
是的,您可以(并且应该)使用(一个)awk 而不是(两个)grep 和 cut:
$ nc localhost 9571 | awk -F: '/^rating:/ { print $2 }'
Run Code Online (Sandbox Code Playgroud)
确保尽可能匹配您的线路,以避免出现丑陋的错误。
/rating/ 作品, /^rating/ 更好(更安全), /^rating:/ 最好(在这种情况下)。| 归档时间: |
|
| 查看次数: |
1864 次 |
| 最近记录: |