Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 从数据文件中删除选定行-第2部分_Awk - Fatal编程技术网

Awk 从数据文件中删除选定行-第2部分

Awk 从数据文件中删除选定行-第2部分,awk,Awk,以下是前面的讨论:() 我试着遵循Fredirk和Glenn Jackman提出的想法,我给出了如下代码,仅当这对数字匹配特定的信条时才打印行 当我执行代码时,会有输出,但它会打印所有的行,而不是只打印特定的行 #!/usr/bin/awk -f BEGIN { i=0 for (n=1; n<=8; n++) set[i++] = n; for (n=57; n<=64; n++) set[i++] = n; for (n=9; n<=49;

以下是前面的讨论:()

我试着遵循Fredirk和Glenn Jackman提出的想法,我给出了如下代码,仅当这对数字匹配特定的信条时才打印行

当我执行代码时,会有输出,但它会打印所有的行,而不是只打印特定的行

 #!/usr/bin/awk -f

 BEGIN  {
   i=0
   for (n=1; n<=8; n++) set[i++] = n;
   for (n=57; n<=64; n++) set[i++] = n;
   for (n=9; n<=49; n+=8) {set[i++] = n; set[i++] = n+7};
    }


 /^|/{
     split($3, res1, "@"); split($6, res2, "@"); #print res1[1], res2[1]

     if ( (res1[1] in set) == (res2[1] in set) ); 

     {
       print;
       next;

     }

 }
#/usr/bin/awk-f
开始{
i=0

对于(n=1;n在
if
命令后有一个分号。如果该条件为真,则不执行任何操作。然后打印每一行。

感谢您的回复。我删除了分号,并将“==”改为“&&&”。这次我得到了一些答案,但不是我想要的。我想要数组“set”中的两个数字,(res1[1]和res2[1])如果出现这种情况,则该行将被删除。我提供代码供您考虑。谢谢。#!/usr/bin/awk-f BEGIN{I=0 for(n=1;如果要删除该行,为什么要打印它?打印只是为了确认它选择了正确的要删除的行。(我是编程新手)非常感谢。