Extrai texto de um arquivo e substitui no outro

0

Eu tenho dois arquivos gerados automaticamente. Eu não sei de antemão quais serão os comprimentos dos arquivos.

Eu preciso escrever um script que pegue a primeira palavra da penúltima linha no arquivo # 1, vamos chamá-la de $ WORDONE e substituir qualquer palavra que apareça APÓS uma palavra-chave, vamos chamá-la de $ KEYWORD, no arquivo # 2. $ KEYWORD aparece apenas uma vez no arquivo # 2.

Ou seja, o arquivo nº 2 deve ler:

conteúdo ..... $ KEYWORD $ WORDONE content ....

Eu também prefiro usar apenas grep, sed ou outras ferramentas que estão incluídas na maioria das distros desde o início.

    
por V.Vocor 19.01.2017 / 19:47

1 resposta

0

De acordo com os comentários, tenho que reformular essa resposta (code in bash)

Como informado nos comentários, se o seu objetivo é obter a primeira palavra da penúltima linha de arquivo1, a maneira correta é

WORDONE=$(tail -n2 file1 |head -n1 |grep 'REGEX Expression to get 1st word')

#or even this way that i tend to personally prefer:
WORDONE=$(tail -n2 file1 |head -n1 |awk -F"words delimiter" '{print $1}')
#tail will isolate the last two lines and then head will get the first of them = one line before end.
# In case of grep you need to built a regulare expression to give you the first word of this line.
# In case of awk you need to define the delimiter between words in this line (space, comma, etc) and awk will return to you the first word.

#To append wordone to a keyword in file2 you can use:
sed "s#$KEYWORD#$KEYWORD $WORDONE#" file2
#You can use g at the end of sed for global replacement of all $KEYWORD appearances. 
#Otherwise only the first $KEYWORD will be replaced.
#To write replacement immediately to the file2 use 'sed -i'

Mais dicas: Se o valor que você está procurando é conhecido desde o começo, você não precisa de cauda e cabeça. Você apenas usa o termo de pesquisa no arquivo1.

WORD=$(grep "search term" file1)

PS: O padrão gnu grep retorna toda a linha quando o termo de busca é encontrado.

Comentário:
Seria melhor incluir exemplos de arquivo1 e arquivo2 para fornecer um código melhor. Estes são apenas conselhos; os resultados podem estar incorretos para o seu escopo real.

    
por 19.01.2017 / 21:00