No arquivo de entrada mostrado abaixo, estou tentando encontrar a string job_type
e movê-la para a próxima linha se corresponder a job_type.
Eu tentei isso, mas não está funcionando:
sed "s/[A-Z][a-z]*job_type:/\njob_type:/g"
Entrada:
insert_job: VAU_vaultnotification_ertgvfg_job job_type: xxx
insert_job: VAU_vaultnotification_ertgvfg_frd job_type: yyy
insert_job: VAU_vaultnotification_ertgvfg_erb job_type: SXC
job_type: CMD
insert_job: VAU_vaultnotification_ertgvfg_frd job_type: YUI
Saída esperada:
insert_job: VAU_vaultnotification_ertgvfg_job
job_type: xxx
insert_job: VAU_vaultnotification_ertgvfg_frd
job_type: yyy
insert_job: VAU_vaultnotification_ertgvfg_erb
job_type: SXC
job_type: CMD
insert_job: VAU_vaultnotification_ertgvfg_frd
job_type: YUI
Seus requisitos não estão claros para mim, mas talvez você queira:
Ou:
Eu faria algo parecido com isso, usando GNU
sed
:A primeira parte
/insert_job/
corresponde a isso em uma linha antes de fazer a substituição. Se "insert_job" (ou qualquer regex que você preferir) não for encontrado, ele não fará a substituição.Usando GNU
sed
Usando Raku (anteriormente conhecido como Perl_6)
Supondo que todas as linhas a serem modificadas contenham pelo menos 4 "colunas" separadas por espaços em branco (linhas com menos de 4 "colunas" são retornadas sem modificação):
Acima não assume nenhum padrão de string na entrada, apenas o número apropriado de espaços em branco separados
words
(ou seja, colunas). Para linhas correspondentes, as primeiras 2 colunas são retornadas, depois uma nova linha e, em seguida, as colunas restantes (o OP fornece entrada de amostra em que a stringjob_type
começa na 3ª coluna).No entanto, se você quiser usar um regex e procurar padrões de string, o Raku está de volta (usando o
subst
operador). Abaixo, Raku procura por 8 átomos de regex entre/ ^ ... $ /
, entre as afirmações de largura zero de^
início e$
fim de string (âncoras). Uma vez combinado, o<(
marcador de captura de Raku é usado para largar tudo antesjob_type
da partida. Então, nasubst
metade de substituição, uma\n
nova linha é~
concatenada à$/
variável de correspondência e retornada.Entrada de amostra:
Saída de Amostra (primeiro exemplo de código, acima):
Observe que o OP não deixou claro se toda a saída deve ser justificada à esquerda ou não (zero caracteres de espaço em branco à esquerda). A primeira resposta acima é justificada à esquerda, no entanto, é fácil
trim
ou até mesmo recuar todas as linhas que começamjob_type
na saída (por exemplo, na segunda resposta usando{"\n "~$/}
na substituição irá recuar).https://raku.org