Могу ли я использовать переменную Bash в команде sed? [дубликат]

Я пытаюсь выполнить 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' и так далее.

Есть идеи?

1
задан 5 August 2014 в 12:47

1 ответ

Вы хотите заменить $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 фетишист, таким образом, я, вероятно, пошел бы для последнего.

2
ответ дан 5 August 2014 в 12:47

Другие вопросы по тегам:

Похожие вопросы: