【发布时间】:2013-12-26 17:33:48
【问题描述】:
我知道如何使用 > 将简单 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匹配的内容并打印其第3、4、5、6、10和11个值,
以及第二个值的一部分……这些值是从 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 运行相同的命令并将输出写入文本文件并终止它?
【问题讨论】:
-
现在,我无法像上面所说的那样写入文件。当我无法理清如何在文件中编写此命令 o/p 时,我想如何控制行数?
-
当您运行您说您尝试过的命令时,输出会显示在屏幕上吗?因为它看起来应该进入文件,所以问题是如果不在那里,它会去哪里。
-
我在这里看到了类似的问题:stackoverflow.com/q/8058831/184968。答案 (stackoverflow.com/a/8058922/184968) 说要在 awk 脚本中添加
fflush()。 -
或者你可以试试这个问题的答案:unix.stackexchange.com/questions/25372/…
-
可能在我之前的示例中将
tail更改为head?但是在 awk 中使用 NR 计数器似乎是最好的方法。祝你好运。