sed在行之间获取文本

时间:2013-03-28 15:13:30

标签: bash unix sed awk

我在文件中有提示历史记录:

[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输出之间获取文本?即

[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

2 个答案:

答案 0 :(得分:2)

如果我理解正确,你可以简单地写一下:

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

"允许bash评估变量,与'

不同

答案 1 :(得分:1)

使用包含awktac的打印标记:

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

这会在最后一次$first之后和$second出现之前获取行。