У меня есть файл в формате:
==============================
nfsserver1.example.com
==============================
/vol/vol1 -sec=sys,rw=clinet1,root=clinet10
/vol/vol2 -sec=sys,rw=clinet1,root=clinet10
==============================
nfsserver3.example.com
==============================
==============================
nfsserver4.example.com
==============================
/vol/vol1 -sec=sys,rw=clinet4,root=clinet10
и мне нужно переформатировать его так:
nfsserver1.example.com /vol/vol1 -sec=sys,rw=clinet1,root=clinet10
nfsserver1.example.com /vol/vol2 -sec=sys,rw=clinet1,root=clinet10
nfsserver3.example.com
nfsserver4.example.com /vol/vol1 -sec=sys,rw=clinet4,root=clinet10
Вот что я пробовал:
while read server; do
echo "---- ${server} -----------------------------------------"
cat file.txt|\
grep -v "========"|\
awk -v srv=${server} '/^nfsserver1\.example\.com$/ {f=1} f; /^$/ {f=0}'|\
grep -v "^$"|\
awk -v srv=${server} '{printf("%s %s\n",srv,$0)}'
echo
server=""
done < <(cat file.txt|grep "^[a-z].*\.example\.com$")
но я не знаю, как именно я могу включить переменную в поиск по шаблону.
Я попробовал это:
awk -v srv=${server} '$0 ~ srv {f=1} f; /^$/ {f=0}'
Но выдает неправильный вывод, и я хотел бы иметь точное совпадение с переменной.
---- nfsserver1.example.com -----------------------------------------
nfsserver1.example.com nfsserver1.example.com
nfsserver1.example.com /vol/vol1 -sec=sys,rw=clinet1,root=clinet10
nfsserver1.example.com /vol/vol2 -sec=sys,rw=clinet1,root=clinet10
nfsserver1.example.com nfsserver1.example.com /vol/vol1 -sec=sys,rw=clinet1,root=clinet10
nfsserver1.example.com nfsserver1.example.com /vol/vol2 -sec=sys,rw=clinet1,root=clinet10
nfsserver1.example.com nfsserver3.example.com
nfsserver1.example.com nfsserver4.example.com /vol/vol1 -sec=sys,rw=clinet4,root=clinet10
---- nfsserver3.example.com -----------------------------------------
nfsserver3.example.com nfsserver3.example.com
nfsserver3.example.com nfsserver3.example.com
nfsserver3.example.com nfsserver4.example.com /vol/vol1 -sec=sys,rw=clinet4,root=clinet10
---- nfsserver4.example.com -----------------------------------------
nfsserver4.example.com nfsserver4.example.com
nfsserver4.example.com /vol/vol1 -sec=sys,rw=clinet4,root=clinet10
nfsserver4.example.com nfsserver4.example.com /vol/vol1 -sec=sys,rw=clinet4,root=clinet10
---- nfsserver3.example.com -----------------------------------------
nfsserver3.example.com nfsserver3.example.com
nfsserver3.example.com nfsserver3.example.com
nfsserver3.example.com nfsserver4.example.com /vol/vol1 -sec=sys,rw=clinet4,root=clinet10
Много строк, которые мне не нужны. Я не совсем уверен, откуда они берутся.