Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.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
需要帮助创建Linux脚本吗_Linux_If Statement_Command Line_Replace - Fatal编程技术网

需要帮助创建Linux脚本吗

需要帮助创建Linux脚本吗,linux,if-statement,command-line,replace,Linux,If Statement,Command Line,Replace,我有以下资料: ... #define DIRT 4 #define PLANKS 5 #define WOOD_PLANKSs 5 #define BRICKS 6 ... 我需要删除其中一条与前面的行编号相同的行(例如,删除木板,因为木板的编号相同,5) 在linux(或Windows)脚本中是否有这样做的方法,也许可以使用if-then语句?在linux中,使用uniq命令和-f参数跳过前两个字段的比较:uniq-f2在linux中,使用uniq命令,以及要跳过比较前两个字段的-f参数:

我有以下资料:

...
#define DIRT 4
#define PLANKS 5
#define WOOD_PLANKSs 5
#define BRICKS 6
...
我需要删除其中一条与前面的行编号相同的行(例如,删除木板,因为木板的编号相同,5)


在linux(或Windows)脚本中是否有这样做的方法,也许可以使用if-then语句?

在linux中,使用
uniq
命令和
-f
参数跳过前两个字段的比较:
uniq-f2
在linux中,使用
uniq
命令,以及要跳过比较前两个字段的
-f
参数:
uniq-f2
创建一个名为removeDup.awk的awk脚本,如下所示:

  1 BEGIN      { lastDefine=""
  2            }
  3 /^#define/ { if (lastDefine=="") {
  4                lastDefine=$3
  5              } else {
  6                if (lastDefine==$3) {
  7                  next
  8                } else {
  9                  lastDefine=$3
 10                }
 11              }
 12            }
 13            { print
 14            }

awk-f removeDup.awk文件名创建一个名为removeDup.awk的awk脚本

  1 BEGIN      { lastDefine=""
  2            }
  3 /^#define/ { if (lastDefine=="") {
  4                lastDefine=$3
  5              } else {
  6                if (lastDefine==$3) {
  7                  next
  8                } else {
  9                  lastDefine=$3
 10                }
 11              }
 12            }
 13            { print
 14            }

awk-f removeDup.awk filename

因此,如果我想删除file.txt中的WOOD_PLANKS行,那么我将使用什么?上面的命令将删除
WOOD_PLANKS
(以及具有重复第三列的任何其他行)通过发出
uniq-f2 file.txt
那么如果我想删除file.txt中的木板行,那么我会使用什么?上面的命令将通过发出
uniq-f2 file.txt来删除
WOOD_PLANKS
(以及具有重复第三列的任何其他行)。txt
您的文件是否只包含“define”条目,还是文件中的其他行?重复条目总是连续的吗?重复值总是连续的,它只由#定义名称#然后使用carlpett的解决方案;)组成。您的文件仅由“定义”条目组成,还是文件中的其他行组成?重复条目总是连续的吗?重复值总是连续的,它只由#定义名称#然后使用carlpett的解决方案;)组成。嗯,这看起来像是我即将发布的解决方案,如果文件中可能包含其他非定义行,那么这将是必需的+1.为了努力;)当我可以访问linux计算机或可以找到联机shell时,我将尝试此方法。好吧,这看起来像我即将发布的解决方案,如果该文件可能包含其他非定义行,那么这将是必需的+1.为了努力;)当我可以访问linux计算机或可以找到在线shell时,我将尝试此方法。