我遇到过用于从文本文件中打印特定行的解决方案:
sed '123!d;q' file
在这种情况下,为什么sed在输入的第一行之后不退出?
用英语来说,该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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句