我有一个文件,我想比较第 2 列中的每组 4 个值是否相等。
这是我的文件的一部分input.txt
:
1 493733
2 493733
3 493733
4 493733
1 546328
2 546328
3 546328
4 546328
我需要一个脚本来比较前 4 行第 2 列的值:
1 493733
2 493733
3 493733
4 493733
然后跳到下 4 行(...直到文件末尾 - 长度可能会有所不同):
1 546328
2 546328
3 546328
4 546328
第 2 列上的数字应该每 4 行相同,但有时会出现不同的数字,我需要捕捉它。
如果数字匹配,则输出某种消息。如果任何数字不匹配,则输出到.log
要检查的文件中。
答案1
这应该可以解决问题:
file="input.txt"
log_file="some.log"
num_lines=$(wc -l < "$file")
for i in `seq 0 $(bc<<<$num_lines/4)`; do
FIRST_LINE=$(bc<<<"$i*4+1")
SECOND_LINE=$(bc<<<"$i*4+2")
if [ "$(awk NR==$FIRST_LINE "$file")" == "$(awk NR==$SECOND_LINE "$file")" ];
then
echo "some kind of message"
else
echo "Lines $FIRST_LINE and $SECOND_LINE do not match" | tee -a "$log_file"
fi
done