搜索行后将文本文件从一个行号打印到另一个行号

搜索行后将文本文件从一个行号打印到另一个行号

我想从X行号到Y行号打印一个文本文件

X&的值 Y是通过在文本文件中搜索特定行(在本例中为页码)来确定的

我通过以下命令搜索该行

echo -n |grep -nr "Page # 2" FileName.txt |cut -f1 -d: ; echo -n |grep -nr "Page # 3" FileName.txt |cut -f1 -d:

为此我得到了输出

67

128

我想将此输出提供给下面的命令

sed -n 'X,Yp' FileName.txt

但我把它们当作两条不同的线,我怎样才能将它提供给sed命令

之后我想将上述命令的结果提供给lp类似这样的命令......

sed -n 'X,Yp' FileName.txt | lp -dmyprinter

可以在不创建文件的情况下完成此操作吗?

答案1

无需2个阶段预先找出线路。只需使用以下命令即可完成整个操作sed

sed '/Page # 2/,/Page # 3/!d' < FileName.txt

答案2

尝试用变量保留值,如下所示:

FROM_LINE=`echo -n |grep -nr "Page # 2" FileName.txt |cut -f1 -d: `
TO_LINE=`echo -n |grep -nr "Page # 3" FileName.txt |cut -f1 -d:`

然后将这些变量与 sed 一起使用:

sed -en "${FROM_LINE},${TO_LINE}p" FILE

相关内容