用于测试每个输入行的标准 Unix/Linux 实用程序

用于测试每个输入行的标准 Unix/Linux 实用程序

我正在编写一个 Bash 脚本,它应该测试输入中的每一行是否满足某些条件。

有没有办法采用谓词并将所有行减少到 0 或 1,这样我就不必使用 Linux 发行版中常规标准或随时可用的实用程序自己编写循环代码?

答案1

样本数据(我们希望所有包含““):

$ cat x
not this
want this
not that
want that

你可以使用awk

  • 1如果该行与正则表达式匹配,则打印/want/
  • 0如果行不匹配,则打印
$ cat x | awk '{if(match($0,/want/)){print 1}else{print 0}}'
0
1
0
1

或者尝试sed

  • 将包含以下内容的行替换10(否则它们将作为 传递1
  • 替换包含““与1
  • 将不是 a 的行替换1为 a0
$ cat x | sed -re 's/^1$/0/' -e 's/^.*want.*$/1/' -e 's/^[^1][^$].*$/0/'
0
1
0
1

相关内容