2015-07-21 10 views
5

Fondamentalmente voglio prendere la linea che si trova sotto la parola "LOAD" in filename1, e renderla la seconda colonna in un nuovo file, dove la prima colonna proviene da filename2. (Questo è stato fatto all'interno di un ciclo, ma penso che è irrilevante.)Come reindirizzare l'output di grep per incollare l'input?

Quindi, se ho

grep -A 1 LOAD filename1 >> temp 
paste filename2 temp >> filename3 
rm temp 

C'è un modo per farlo in un solo comando, senza file temporaneo? Qualcosa di simile

grep -A 1 LOAD filename1 | paste filename2 "grep output" >> filename3 

risposta

6

È possibile utilizzare processo di sostituzione invece di utilizzare un file temporaneo:

paste filename2 <(grep -A 1 LOAD filename1) >> filename3 
+1

Sulla vecchia pasta (pasta 8.4 su CentOS6.5), ho dovuto usare il ' -s' bandiera. Ha funzionato con pipe (risposta di @dermen) o processo di sostituzione –

1
grep -A 1 LOAD filename1.txt | paste filename2.txt /dev/stdin >> filename3.txt