将字段打印到终端命令

时间:2013-07-16 18:56:49

标签: printing awk terminal arduino

很抱歉让您感到困惑,

好吧,实际上我想将串口消息发送到连接到/ dev / ttyACM0的arduino,可以通过在终端输入此命令来完成

$ echo "Hello Arduino" > /dev/ttyACM0

所以,我需要我的awk发送一个这样的命令。

这是我的PBH.awk文件:

BEGIN{
    FS = "[ .]";
    RS = "\0";
    IGNORECASE = 1;
}{
    for (i=1;i<NF;i++){
        if(i == 1){
        printf("Diketahui : %s\n",$18);}
        if($i=="y" && $(i+1)=="=")
            {
                printf("     Persamaan : %s %s %s %s %s %s %s %s %s %s %s\n",$(i),$(i+1),$(i+2),$(i+3),$(i+4),$(i+5),$(i+6),$(i+7),$(i+8),$(i+9),$(i+10))
                inisialisasi = "stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts"
                kirim = "echo \"Field2 contains: $2""\" > /dev/ttyACM0"
                print | inisialisasi
                print | kirim
            }
    }

}

这是soalPBH.txt:

Persamaan gelombang berjalan pada seutas tali dinyatakan dengan y = 0,02 sin (20 π t – 0,2 π x). Jika x dan y dalam cm dan t dalam sekon, tentukan:

然后我用

运行我的awk
$ awk -f PBH.awk soalPBH.txt

我的程序不会在字段编号2上发送文本。 这有什么问题??

kirim = "echo \"Field2 contains: $2""\" > /dev/ttyACM0"

1 个答案:

答案 0 :(得分:0)

非常不清楚你要做什么。是这样的:

$ cat file
field1 field2 field3

$ awk '{printf "echo \"Hello Arduino %s\" > /dev/ttyACM0\n", $2}' file
echo "Hello Arduino field2" > /dev/ttyACM0

如果没有,请澄清您的问题并提供一些明确的样本输入和预期输出。

鉴于您更新的问题,只需移动报价,使$ 2超出报价而不是在报价内,即"$2而不是$2"

kirim = "echo \"Field2 contains: " $2 "\" > /dev/ttyACM0"

然后告诉我们你是否还有问题。