我正在使用 bash 从文件中提取行,如下所示:
for line in $(sed -n 3~6p file)
do
echo $line
done
但是,我现在有些行是空的/空白的,并且这些行没有打印,因此在表单上给了我一个输出:
line3
line9
line21
line27
我也希望打印空行,以便获得:
line3
line9
line21
line27
关于如何实现这一目标的任何建议?
使用read
命令逐行读取输入:
sed -n 3~6p file | \
while read line
do
echo "$line"
done
除了忽略空行之外,使用进程替换读取文件还有其他问题:它将所有sed
输出读入内存,忽略所有尾随空格,并按空格分割每一行。最后一个意味着如果您的其中一行包含 string a b c
,它将被打印为三个单独的行。while read line
成语解决了所有这些问题。
您一直有解决方案,只需删除bash
for 循环:
$ sed -n 3~6p file
line9
line15
该sed
脚本从第 3 行开始每隔 6 行打印一次。如果您告诉我们您想要做什么,Bash 不是文本处理的最佳工具,也许sed
可以处理整个工作,如果不是awk
肯定可以。