web-dev-qa-db-ja.com

行を検索した後、行番号から別の行にテキストファイルを印刷します

X行番号からY行番号にテキストファイルを印刷したい

XYの値は、テキストファイル(この場合はページ番号)で特定の行を検索することによって決定されます。

次のコマンドで行を検索します

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

しかし、私はそれらを2つの異なる行として取得し、どうすればそれをsedコマンドにフィードできますか

その後、上記のコマンドの結果をlpコマンドに次のようにフィードしたいと思います...

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

これはファイルを作成せずに実行できますか?

5
S.M.09

事前にラインを見つけるために2つのフェーズは必要ありません。 sedですべてを実行するだけです。

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

次のような変数で値を保持するようにしてください。

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
0
dsmsk80