2011-12-06 18 views
0

我有一個program打印到標準輸出。如何將`program`的輸出直接輸入到`ex`而不將其保存爲臨時文件?

$ ./program > log.txt 
$ cat log.txt 
[A] 
00: efbb bf52 454d 2047 454e 5245 204f 7065 
10: 7261 0d0a 5245 4d20 4441 5445 2032 3031 
20: 310d 0a52 454d 2044 4953 4349 4420 3235 

[B] 
00: 3132 4334 3134 0d0a 5245 4d20 434f 4d4d 
10: 454e 5420 2245 7861 6374 4175 6469 6f43 
20: 6f70 7920 7631 2e30 6231 220d 0a50 4552 

[C] 
00: 464f 524d 4552 2022 5661 7269 6f75 7322 
10: 0d0a 5449 544c 4520 2220 5468 6520 4f70 
20: 6572 6120 4344 2031 220d 0a46 494c 4520 

我想管program的輸出xxd產生更多的信息。

$ echo -e 'g/^00/,/^20/!xxd -r | xxd\n%p' | ex file.log 
[A] 
0000000: efbb bf52 454d 2047 454e 5245 204f 7065 ...REM GENRE Ope 
0000010: 7261 0d0a 5245 4d20 4441 5445 2032 3031 ra..REM DATE 201 
0000020: 310d 0a52 454d 2044 4953 4349 4420 3235 1..REM DISCID 25 

[B] 
0000000: 3132 4334 3134 0d0a 5245 4d20 434f 4d4d 12C414..REM COMM 
0000010: 454e 5420 2245 7861 6374 4175 6469 6f43 ENT "ExactAudioC 
0000020: 6f70 7920 7631 2e30 6231 220d 0a50 4552 opy v1.0b1"..PER 

[C] 
0000000: 464f 524d 4552 2022 5661 7269 6f75 7322 FORMER "Various" 
0000010: 0d0a 5449 544c 4520 2220 5468 6520 4f70 ..TITLE " The Op 
0000020: 6572 6120 4344 2031 220d 0a46 494c 4520 era CD 1"..FILE 

這裏的問題是:
如何管program直接ex輸出,而不將其保存爲一個臨時文件?


注:更喜歡使用標準工具(如,edexsedawk等)

+0

但是你想在前?中做什麼?只需加載它?或者進行一些更改,將數據保存爲新文件,然後退出?更完整的描述你的最終目標將會有所幫助;前可能不是正確的工具。 – ghoti

回答

2

前接受 「 - 」 作爲輸入文件。這表示前從標準輸入讀取。 你或許可以這樣做:

./program | ex -c "your command1" -c "your command2" -

如果-c不能使用你的意圖,那麼也許你可以使用重定向作爲前男子頁說,標準輸入重定向當使用手動他們介紹stderr作爲命令的輸入。

相關問題