Shell脚本,如果为真,则从某些给定的行中打印整行

时间:2018-07-25 18:35:36

标签: shell

我们需要编写一个脚本,使用包含行数的输入文件, 其中一行具有5厘米(1 | 2 | 3 | 4 | 5)。

假设文件有3行,例如

20 | 30 | 10 | 40

40 | 50 | 60 | 70

5 | 3 | 2 | 1

我们需要逐行读取文件,并检查第二个分度值是否大于第三个值(即30> 10)。如果为true,则打印整行,并打印第二值>第三值的所有行。

需要任何人的帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

这是一种方法。将文件读取到循环中,并针对每一行将其拆分为数组,并在arr[1] > arr[2]下打印:

#!/bin/bash

while read line; do

  # split line on spaces and pipes
  IFS='| ' read -r -a arr <<< "$line"

  # echo line if second elem > third elem
  if [[ ${arr[1]} -gt ${arr[2]} ]]; then
    echo $line
  fi
done < text

输出:

a | 30 | 20 | 40 | 50
c | 20 | 10 | 30 | 40