我正在使用以下命令: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(读取前两行。