我有一个我正在创建的perl脚本,我需要从文件中获取几行。我知道我想要匹配的第一行,我将它放在一个字符串中。字符串包含...
DEFINE QLOCAL ('NAME.OF.QUEUE1') +
我需要将上面的行与我想要获取的文本块的第一行匹配,并将所有内容转储到下一个空行到数组。
示例数据文件
DEFINE QLOCAL ('NAME.OF.QUEUE0') +
DESCR('Description') +
PUT(DISABLED) +
GET(DISABLED) +
RETURN
DEFINE QLOCAL ('NAME.OF.QUEUE1') +
DESCR('Description') +
PUT(ENABLED) +
GET(ENABLED) +
RETURN
DEFINE QREMOTE ('NAME.OF.QUEUE1') +
DESCR('Description') +
PUT(ENABLED) +
GET(DISABLED) +
MAXDEPTH(1000) +
RETURN
我一直试图让以下awk命令工作
awk '/$Object/' RS= file.txt
如果$ Object只是NAME.OF.QUEUE1,我可以获得结果,但它适用于QLOCAL和QREMOTE。我需要匹配整行,而不仅仅是NAME.OF.QUEUE1。如果我将$ Object设置为等于整个第一行,我就没有结果。
这是我从Perl那里打来的,而不是让它工作
my $Object="DEFINE QLOCAL ('NAME.OF.QUEUE1') +\n";
my @ObjectValues = `awk '/$Object/' RS= file.txt`;
任何帮助将不胜感激。
谢谢
答案 0 :(得分:2)
假设您有一个shell变量Object
:
Object="DEFINE QLOCAL ('NAME.OF.QUEUE1') +"
请注意\n
中没有结尾Object
,您可以:
awk -v o="$Object" -v RS= -F'\n' '$1==o' file
使用您的文件,输出:
kent$ awk -v o="$Object" -v RS= -F'\n' '$1==o' file
DEFINE QLOCAL ('NAME.OF.QUEUE1') +
DESCR('Description') +
PUT(ENABLED) +
GET(ENABLED) +
RETURN