我正在尝试执行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
您想$ip
用 shell 变量替换 $i 吗?使用双引号
... | 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
恋物癖者,所以我可能会选择后者。