#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 в своем вопросе.