我正在使用bash从文件中提取行,如下所示:
for line in $(sed -n 3~6p file)
do
echo $line
done
Run Code Online (Sandbox Code Playgroud)
但是,我现在有些行是空的/空白的,并且这些行没有打印,因此在表单上给我一个输出:
line3
line9
line21
line27
Run Code Online (Sandbox Code Playgroud)
我想要打印空行,以便我获得:
line3
line9
line21
line27
Run Code Online (Sandbox Code Playgroud)
关于如何实现这一点的任何建议?
使用该read命令逐行读取输入:
sed -n 3~6p file | \
while read line
do
echo "$line"
done
Run Code Online (Sandbox Code Playgroud)
除了省略空行之外,使用进程替换读取文件还有其他问题:它将所有sed输出读取到内存中,它省略了所有尾随空格,并且它按空格分割每一行.最后一个意味着如果你的一行包含字符串a b c,它将被打印为三个单独的行.这个while read line成语解决了所有这些问题.