簡體   English   中英

awk命令輸出到文本文件

[英]awk command output to a text file

我知道如何使用>將簡單的awk代碼的輸出寫入文本文件,或使用>>將其附加到文本文件中

但是這里的問題是不同的,

這是我的代碼行,其輸出需要寫在文本文件中,

stty -F /dev/ttyUSB0 ispeed 4800 && awk -F"," '/SUF/ {print $3,$4,$5,$6,$10,$11,substr($2,1,2),".",substr($2,3,2),".",substr($2,5,2)}' < /dev/ttyUSB0

-F用於定義字段分隔符,即,上面的行旨在搜索與SUF匹配的任何內容,並打印其第三,第四,第五,第六,第十和第十一值,以及第二值的某些部分。 ..這些值是從USB設備/dev/ttyUSB0讀取的

上面的命令絕對正常,並提供正確的輸出,

這是示例輸出,

SUF Third Fourth Fifth Sixth Tenth Eleventh AA.BB.CC
SUF Third Fourth Fifth Sixth Tenth Eleventh AA.BB.CC
SUF Third Fourth Fifth Sixth Tenth Eleventh AA.BB.CC
SUF Third Fourth Fifth Sixth Tenth Eleventh AA.BB.CC
SUF Third Fourth Fifth Sixth Tenth Eleventh AA.BB.CC
SUF Third Fourth Fifth Sixth Tenth Eleventh AA.BB.CC
SUF Third Fourth Fifth Sixth Tenth Eleventh AA.BB.CC

問題是,輸出不會停止出現,並且它的形式類似於無限循環,我必須按CTRL+C來終止它。

現在真正的問題是,如何將此輸出寫入文本文件?

嘗試:

到目前為止,我已經嘗試過將此輸出寫入文本文件,

stty -F /dev/ttyUSB0 ispeed 4800 && awk -F"," '/SUF/ {print $3,$4,$5,$6,$10,$11,substr($2,1,2),".",substr($2,3,2),".",substr($2,5,2)}' < /dev/ttyUSB0 > outputfile.txt

它確實創建了一個名為outputfile.txt的輸出文件,但其中未寫入任何內容。

這意味着我根本無法將輸出寫入文本文件。 我應該如何僅將此輸出的前幾行寫入文件文本文件?

如果終端無法實現,是否可以使用Python運行相同的命令並將輸出寫入文本文件並終止它?

您的輸出可能已被緩沖,您將在刷新緩沖區之前停止代碼。 通過強制awk只處理幾條記錄,它將優雅地退出並寫入緩沖的輸出。

嘗試通過檢查記錄計數來強制awk處理遇到的前十個問題。

stty -F /dev/ttyUSB0 ispeed 4800 && awk -F"," '/SUF/ and NR < 10 {print $3,$4,$5,$6,$10,$11,substr($2,1,2),".",substr($2,3,2),".",substr($2,5,2)} NR > 9 {exit}' < /dev/ttyUSB0 > outputfile.txt

相對於awk啟動時讀取的第一個記錄, NR求出當前記錄號。 NR大於9時,它將退出。 如果您只想打印一次/SUF/則可以在打印后立即退出。

stty -F /dev/ttyUSB0 ispeed 4800 && awk -F"," '/SUF/ {print $3,$4,$5,$6,$10,$11,substr($2,1,2),".",substr($2,3,2),".",substr($2,5,2); exit}' < /dev/ttyUSB0 > outputfile.txt

您正在對連續寫入的文件運行awk。 您想什么時候停止讀取文件? 也許您想做的是這樣的:

stty -F /dev/ttyUSB0 ispeed 4800 &&
cp /dev/ttyUSB0 tmp && 
awk -F"," '/SUF/ {print $3,$4,$5,$6,$10,$11,substr($2,1,2),".",substr($2,3,2),".",substr($2,5,2)}' tmp

所以您為文件拍攝快照並在其上運行awk?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM