3

ファイルにプロンプ​​ト履歴があります:

[user@host path]# echo $first 
14556
....
[user@host path]# echo $second
65541
....
[user@host path]# echo $first
12345
[user@host path]# command
unknow number of rows
[user@host path]# echo $second
54321
[user@host path]#

$first$secondはランダムな値であり、ファイルにはそれらの多くがあります。ファイルの最後からecho $firstと出力の間のテキストを取得する方法は? echo $secondすなわち

[user@host path]# command
unknow number of rows
[user@host path]# echo $second

使えそうです

sed -n '/WORD1/,/WORD2/p' file

しかし、WORD1とWORD2の代わりに$firstと$secondの書き方がわかりません

次に、(行数がわからない)のみを取得する必要があります。それを行うには、\ を使用します

sed -e '1d' -e '$d' file
4

2 に答える 2

2

私がそれを正しく理解していれば、次のように簡単に書くことができます:

sed -n "/$first/, /$second/ p"  file

"とは異なり、bash が変数を評価できるようにします。'

于 2013-03-28T15:45:21.473 に答える
1

awkおよびで印刷フラグを使用するtac:

$ tac file | awk '/\$first/{p=0;exit}p;/\$second/{p=1}' | tac
12345
[user@host path]# command
unknow number of rows

これは、 が最後に出現した後、 が出現$firstする前の行を取得し$secondます。

于 2013-03-28T15:20:53.843 に答える