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 $firstecho $second输出?IE

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

看来我可以使用

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

但我不知道如何写 $first 和 $second 而不是 WORD1 和 WORD2

那么我只需要获取(不知道行数)。为此,我将使用\

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

2 回答 2

2

如果我理解正确,您可以简单地写:

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

"允许 bash 评估变量,不像'

于 2013-03-28T15:45:21.473 回答
1

使用带有awkand的打印标志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 回答