Existem muitas maneiras de fazer o que você está procurando, apenas alguns exemplos.
awk
e uma solução personalizada
Uma solução adaptada ao seu exemplo é usar awk
e passar 3 variáveis para ela. Não é geral porque se você tiver 4 linhas você tem que passar 4 variáveis e assim por diante ...
O comando awk
tem a maneira simples de gerenciar a coluna através de seu número ( $1
, $2
... $NF
o último).
-
Para simplificar a leitura aqui, uso seu arquivo intermediário antigo
a21s.txt
awk -v s1="ALPHA" -v s2="BETA" -v s3="GAMMA" ' NR==1 {print s1,$7} ; NR==2 {print s2,$7} ; NR==3 {print s3,$7} ; ' a21s.txt
- Na primeira linha, você passa 3 variáveis para
awk
com a opção-v
. - Nas seguintes linhas você usa que a variável interna NR , mantém a contagem do número da linha. Então você vai imprimir a variável s1 , somente quando você tem a primeira linha, a s2 com a segunda ... e assim por diante.
- Na última linha após o
'
, você pode especificar o nome do arquivo, portanto, não precisa chamar o processocat
e canalizá-lo para oawk
one. - Se a variável (ALPHA, BETA ...) for generável com algum mecanismo (por exemplo, "Serial01, Serial02"), você poderá colocá-la em vez dos controles no número da linha e na variável externa.
- Na primeira linha, você passa 3 variáveis para
-
Nota prática: em * nix você pode enviar para trens de comandos (
|
) uma saída para o seguinte sem necessidade de criar arquivos intermediários.
Então, em seu exemplo, você poderia usar diretamente:cat "*Pre*.msg" | strings2 | grep "D24" | cut -d" " -f7 > Air21Serials.txt
Em vez de
cut
, neste caso, você pode usar o comandoawk
,cat "*Pre*.msg" | strings2 | grep "D24" | awk '...' > final_file.txt
.
Uma solução mais geral: paste
+ awk
Digamos que você tenha seu arquivo a21s.txt
e outro ( b.txt
) com o mesmo número de linhas e dentro das cadeias (uma palavra cada) que deseja prefixar (conforme a seguir).
ALPHA
BETA
GAMMA
você pode simplesmente usar
paste b.txt a21.txt | awk '{print $1,$8}' > Air21Serials.txt
Observe que agora a coluna da sua série é a oitava porque você adiciona outra antes com colar.
Nota
Pergunte ao próprio Linux para obter mais informações com man awk
e man paste
:-)