我有一個需要在圖案之間插入兩條線的CNC機器的G代碼文件。基本上我需要編寫一個簡單的後處理器。 這是一個很小的代碼片斷從我的CAM程序:兩個圖案之間的awk/sed插入線
G00 X-1.663 Y-0.992 Z+0.
G01 X-1.072 Y-0.992
G01 X-1.072 Y-0.874
G01 X-1.663 Y-0.874
G01 X-1.663 Y-0.992
G00 X-3.021 Y-0.992
G01 X-3.021 Y-0.874
G01 X-2.43 Y-0.874
G01 X-2.43 Y-0.992
G01 X-3.021 Y-0.992
我需要插入的順序一個G00和G01之間的兩條線。所以,上面的例子,現在將變成:
G00 X-1.663 Y-0.992 Z+0.
M51
M04 F.1
G01 X-1.072 Y-0.992
G01 X-1.072 Y-0.874
G01 X-1.663 Y-0.874
G01 X-1.663 Y-0.992
G00 X-3.021 Y-0.992
M51
M04 F.1
G01 X-3.021 Y-0.874
G01 X-2.43 Y-0.874
G01 X-2.43 Y-0.992
G01 X-3.021 Y-0.992
我需要的另一件事是換行必須是Windows/DOS風格在末端\ r \ n。這與需要DOS文本文件的舊式,易變的CNC控制器有關。我可以使用另一個awk或sed腳本,但一個班輪將是首選。 我嘗試:
awk '/G00/,/G01/{print $0 RS "M51" RS "M04 F.1";next}1' FILE
但線ANY G00或G01之後。我只需要在G00和G01之間。 還有一件事,我更喜歡單行命令。 謝謝!
爲什麼在'G00'和'G01'。不會'awk'/ G00/{$ 0 = $ 0 RS「M51」RS「M04.F1」} 1'file'夠了嗎? – user000001
因爲可能有多個G00命令並且在它們之間添加重複的命令會添加不必要的行並佔用寶貴的文件空間。 CNC控制器文件空間的測量單位是千字節,因爲它是1987年生產的舊allen bradley 8400. –
對於明確問題,其答案可以概括爲+1。 :) – zx81