Shell命令使用模式检索特定值

时间:2014-08-21 11:58:17

标签: bash shell awk sed

我有一个包含如下数据的文件。

appid=TestApp
version=1.0.1

我们要解析文件并捕获分配给appid字段的值。

我尝试过使用awk命令,如下所示

awk '/appid=/{print $1}' filename.txt

然而它输出整行

appid=TestApp 

但我们只需要

TestApp

请告诉我如何使用awk / grep / sed shell命令实现此目的。

3 个答案:

答案 0 :(得分:4)

您需要更改字段分隔符:

awk -F'=' '$1 ~ /appid/ {print $2}' filename.txt

或完全匹配

awk -F'=' '$1 == "appid" {print $2}' filename.txt

输出

TestApp

答案 1 :(得分:3)

大约有20种不同的方法可以做到这一点但是当你在文件中有name = value语句来简单地构建这些赋值的数组然后只打印你关心的任何内容时,这通常是一个好主意。关于使用它的名字,例如:

$ cat file
appid=TestApp
version=1.0.1
$
$ awk -F= '{a[$1]=$2} END{print a["appid"]}' file
TestApp
$ awk -F= '{a[$1]=$2} END{print a["version"]}' file
1.0.1
$ awk -F= '{a[$1]=$2} END{for (i in a) print i,"=",a[i]}' file
appid = TestApp
version = 1.0.1

答案 2 :(得分:0)

如果你已经在shell中,那么只需获取文件即可让你得到你想要的东西。

. filename.txt
echo $appid