在文件中循环,但忽略Bash中的前两行



我正在使用以下命令:diff -u file1 file2 > diff.txt并解析输出。我有一个循环,可以迭代文件中的每一行。我正在使用中的循环解决方案https://stackoverflow.com/a/1521498/17386696.

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从stdin(diff.txt(读取前两行。

最新更新