Ambos os comandos fornecem a seguinte saída
sed '/line_name/ r linenames' schema
awk '{print} /line_name/ {while (getline < "linenames") print}' schema
line_name:
name1
name2
name3
shot_edit:
channel edit:
cable_edit
Eu tenho dois arquivos. Um sendo um esquema e o outro uma lista de dados. O esquema parece:
line_name:
shot_edit:
channel edit:
cable_edit
e se repete regularmente para o número de linhas que eu tenho.
O outro arquivo é uma lista de nomes de linha e vai:
name1
name2
name3
Eu gostaria de copiar todos os nomes de linha logo após o campo line_name, mas eu realmente não sou tão bom assim com o awk. Alguém poderia me dar algumas dicas?
Ambos os comandos fornecem a seguinte saída
sed '/line_name/ r linenames' schema
awk '{print} /line_name/ {while (getline < "linenames") print}' schema
line_name:
name1
name2
name3
shot_edit:
channel edit:
cable_edit
Este comando insere cada linha do segundo arquivo ( linenames
) após cada primeira linha no arquivo schema
awk '{print} /line_name/ { getline < "linenames" ; print}' schema
com esta saída
line_name:
name1
shot_edit:
channel edit:
cable_edit
line_name:
name2
shot_edit:
channel edit:
cable_edit
....
Este comando em vez disso
awk '{print} /line_name/ { getline < "linenames" ; print}' schema | sed ':a;N;$!ba;s/line_name:\n/line_name: /g'
Insira o nome logo após a tag line_name:
line_name: name1
shot_edit:
channel edit:
cable_edit
line_name: name2
shot_edit:
channel edit:
cable_edit
line_name: name3
...
Se você deseja inserir na mesma linha com line_name
:
$ awk '/line_name/{getline name < "linenames";$0 = $0" "name}1' schema
line_name: name1
shot_edit:
channel edit:
cable_edit
line_name: name2
shot_edit:
channel edit:
cable_edit
line_name: name3
shot_edit:
channel edit:
cable_edit