循环遍历文件但忽略 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) 中读取前两行。
我正在使用以下命令: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) 中读取前两行。