как получить значение из файла json с помощью sed/aws?

#shell #unix #awk #sed #sh

Вопрос:

Я новичок в команде sed amp; awk в unix. У меня есть выходной файл.json, который имеет выходное значение команды «docker ps» :

 $ cat output.json 
CONTAINER ID   IMAGE                                       COMMAND   CREATED         STATUS         PORTS     NAMES
dc6f2c93c832   ankur1825/jmeter-chromewebserver:jmeterv1   "bash"    3 minutes ago   Up 3 minutes             sleepy_mendeleev
 

я хотел бы получить только значение идентификатора КОНТЕЙНЕРА, т. е. «dc62cf93c832». Как мне получить это с помощью команды sed или awk.

Я попробовал ниже, но это могло дать мне только идентификатор контейнера:

 $ CONTAINER-ID=$(cat output.json | sed 's///_/g')
bash: CONTAINER-ID=CONTAINER: command not found
 

любая помощь будет признательна!

Комментарии:

1. Это не файл JSON. Ваша попытка sed 's///_/g' не имеет смысла. И имена переменных не могут содержать тире.

2. Гораздо лучшим решением является передача подходящих параметров docker ps . Если вы присвоите имя своему контейнеру, docker run --name something ваше решение будет просто docker ps --filter name=something -q

Ответ №1:

 awk 'NR==2{print $1}' output.json
 

даст вам результат, который вы хотите, но неясно, думали ли вы, что входной файл был JSON в первую очередь, или что вы пытались сделать с помощью команды sed в своем вопросе.