bash - 在 bash 中只获取字符串的一部分的最简单方法

标签 bash

我喜欢听sky.fm,我用curl查询媒体信息

我现在用的是:

curl -s curl http://127.0.0.1:8080/requests/status.json | grep now_playing

返回:

"now_playing":"Cody Simpson - On My Mind"

我想要的是:

Cody Simpson - On My Mind

也许更好,将艺术家和标题放在单独的变量中。

artist: Cody Simpson
title: On My mind

解决方案

#!/bin/bash
a=`curl -s http://127.0.0.1:8080/requests/status.json | grep -Po '(?<=now_playing":")[^"]+'`
artist=$(echo $a | awk -F' - ' '{print $1}')
title=$(echo $a | awk -F' - ' '{print $2}')
echo $artist
echo $title

最佳答案

您可以使用 cut 来完成此操作。

curl -s http://127.0.0.1:8080/requests/status.json | \
   grep 'now_playing' | cut -d : -f 2 | sed 's/"//g'

剪切命令可帮助您选择字段。这些字段由分隔符定义,在本例中为 ':'-d选项指定分隔符,-f选项指定我们要选择的字段。

sed 部分只是删除引号。

关于bash - 在 bash 中只获取字符串的一部分的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15703822/

相关文章:

java - 从java程序执行php

python - gcp dataproc 如何在交互式登录和 ssh 命令之间使用相同的 python

linux - Grep 内部从 ls 和 head 返回的文件

linux - 从另一个变量的内容中获取变量的内容,两个变量名称具有相同的尾随数字

linux - svn 导出在命令行上工作,但在 shell 脚本中不工作

bash - 重命名文件时 bash 循环的性能

arrays - Bash - 将某些服务的端口号读入数组

linux - 查找命令不适用于名称中的冒号

linux - 我如何在 linux 中解析这个字符串?

wordpress - 尝试安装 php-gd 时出错