我正试图找出一个命令来解析以下文件内容:
Operation=GET
Type=HOME
Counters=CacheHit=0,Exception=1,Validated=0
我需要将Exception=1
提取到自己的行中。我对awk,sed和grep不满意,但进展不大。有没有人对使用任何Unix命令执行此操作有任何提示?
谢谢
答案 0 :(得分:2)
由于您的文件接近bash语法,因此您可以执行一个有趣的小技巧,使bash本身解析文件。首先,使用诸如tr之类的程序将输入转换为bash可以解析的内容,然后“来源”该内容,这将创建shell变量,稍后可以扩展以获取值。
source <(tr , $'\n' < file_name_goes_here)
echo $Exception
答案 1 :(得分:0)
许多方法可以做到这一点。这是一个假定文件名为“ file.txt”的文件。抓取所需的行,用Except
替换从行首到Except的所有内容,然后使用逗号作为分隔符来提取第一个字段。
$ grep Exception file.txt | sed 's/.*Except/Except/g' | cut -d, -f 1
Exception=1
如果您想使用gawk:
$ grep Exception file.txt | sed 's/.*Except/Except/g' | gawk -F, '{print $1}'
Exception=1
或仅使用grep和sed:
$ grep Exception file.txt | sed 's/.*\(Exception=[0-9]*\).*/\1/g'
Exception=1
或@sheltter提醒我:
$ egrep -o "Exception=[0-9]+" file.txt
Exception=1
答案 2 :(得分:0)
无需混合使用命令。
awk -F, 'NR==2 {print RS$1}' RS="Exception" file
Exception=1
在这里,我们通过寻找RS="Exception"
的关键字来分隔行
如果该行有两个记录(仅当找到关键字时),则
使用“记录”选择器打印第一个字段,并使用命令分隔。
PS仅在您有一个Exception
字段时才有效