循环遍历文件但忽略 Bash 中的前两行

Looping through a file but ignoring the first two lines in Bash

我正在使用以下命令:diff -u file1 file2 > diff.txt 并解析输出。我有一个循环可以迭代文件中的每一行。我正在使用 .

的循环解决方案
while IFS="" read -r p || [ -n "$p" ] ; do
      # first character '+'
      if [[ ${p:0:1} = "+" ]] ; then
        # do something
      # first character '-'
      elif [[ ${p:0:1} = "-" ]] ; then
        # do something
      fi
    done < diff.txt

我当前的问题是文件的前两行如下所示:

--- file1  2022-03-19 12:28:10.119916406 -0400
+++ file2  2022-03-19 12:28:11.171926970 -0400

我知道如果所有其他方法都失败了,我可以为 +++--- 行创建另一个条件语句。我很好奇是否有办法将循环调整为从第三行开始以避免出现三重符号。

鉴于要忽略的行 (2) 很少,我建议如下:

{
  read; read
  while IFS="" read -r p || [ -n "$p" ] ; do
    ...
  done
} < diff.txt

read; read 从标准输入 (diff.txt) 中读取前两行。