我遇到了这个从文本文件打印特定行的解决方案:
sed '123!d;q' file
Run Code Online (Sandbox Code Playgroud)
在这种情况下,为什么在第一行输入后 sed 不退出?
Gil*_*il' 20
在英语中,这个sed
程序的意思是:对于每一行,
123!
] 如果当前行号不是 123,则 [ d
] 删除当前行并开始下一个循环(即移动到下一行);d
命令没有执行时才会到达这一点),[ q
] 退出而不处理更多行(但在我们垂死的阵痛中打印出当前行)。或者,如果您愿意,可以使用 shell 语法:
line_number=0
while IFS= read -r pattern_space; do
line_number=$(($line_number+1))
if [ $line_number -ne 123 ]; then # 123!
continue # d
fi
echo "$pattern_space"; break # q
echo "$pattern_space" # implicit final print (never reached)
done
Run Code Online (Sandbox Code Playgroud)