Shell脚本,如果为true,则从某些给定行打印整行
我们需要写一个脚本,输入包含行数的文件, 其中一条管线上有5个测力计(1 | 2 | 3 | 4 | 5) 假设文件有3行,如 20 | 30 | 10 | 40 40 | 50 | 60 | 70 5 | 3 | 2 | 1 我们需要逐行读取文件,并检查第二个delimeter值是否大于第三个值(即30>10)。如果为真,则打印整行,以及打印第二个值>第三个值的所有行 需要任何人的帮助Shell脚本,如果为true,则从某些给定行打印整行,shell,Shell,我们需要写一个脚本,输入包含行数的文件, 其中一条管线上有5个测力计(1 | 2 | 3 | 4 | 5) 假设文件有3行,如 20 | 30 | 10 | 40 40 | 50 | 60 | 70 5 | 3 | 2 | 1 我们需要逐行读取文件,并检查第二个delimeter值是否大于第三个值(即30>10)。如果为真,则打印整行,以及打印第二个值>第三个值的所有行 需要任何人的帮助 提前感谢。这里有一种方法。将文件读入一个循环中,对于每一行,将其拆分为一个数组,如果arr[1]>arr[2
提前感谢。这里有一种方法。将文件读入一个循环中,对于每一行,将其拆分为一个数组,如果
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
到目前为止,您尝试了什么?@AjayKumar:在
awk
中这不是比在Posix shell中更容易吗?谢谢您的回复。实际上,我们需要编写一个脚本,以输入文件为例,该文件包含行数,其中一行有5个delimeters(1 | 2 | 3 | 4 | 5)。我们需要逐行读取,并检查第二个值是否大于第三个值(2>3)。如果为真,则打印整行,以及打印2>3的所有行