Я пытаюсь выполнить sed
с параметром «-n».
for i in 1 2 3 4 5 ; do maas maas nodes list | grep hostname | cut -d\" -f4 | sed -n '$ip'; done
Я хочу, чтобы она выполняла sed -n '1p'
, затем sed -n '2p'
и так далее.
Есть идеи?
Вы хотите заменить $i в $ip
с Вашей переменной оболочки? Используйте двойные кавычки
... | sed "$ip" ...
, Это имеет определенные последствия. Это не применяется здесь , но Вам, возможно, придется выйти из вещей, Вы не должны будете в метках одинарной кавычки.
, Но я также рассмотрел бы перезапись что, таким образом, Вы не выполняете те же команды n времена для печати первого n строки (который является тем, что это делает). Вот некоторые альтернативы...
Используя head
:
maas maas nodes list | grep hostname | cut -d\" -f4 | head -5
Хранение команды произвело:
output=$(maas maas nodes list | grep hostname | cut -d\" -f4)
for i in 1 2 3 4 5; do
sed -n "$ip"
done
Создание лучшего sed
строка:
maas maas nodes list | grep hostname | cut -d\" -f4 | sed -n $(printf "%dp;" {1..5})
Список весь Ваш поисковый/для обрезки код в один awk
:
maas maas nodes list | awk -F'"' '/hostname/ && i<5 {i++; print $4}'
я awk
фетишист, таким образом, я, вероятно, пошел бы для последнего.