awk在文件中获取两个值

时间:2013-09-18 03:00:45

标签: shell awk

输入文件:

2012/01/18 11:24 GMT+00:00   adm   Add  "/david/admin"  "/apps/data/unix/archives/osn/admin"    ""

我做了

awk -F'"' print {$2"}' /file/path

我得到了

/david/admin

awk -F'"' print {$4"}

让我

/apps/data/unix/archives/osn/admin

是否要将这些组合并存储在单个变量中?

示例:

name=/david/admin
path=/apps/data/unix/archives/osn/admin 

2 个答案:

答案 0 :(得分:4)

如果你想将它们存储在awk变量中,你基本上就完成了:

$ awk -F'"' '{ name=$2;path=$4 } { print name }' <<< '2012/01/18 11:24 GMT+00:00 adm Add "/david/admin" "/apps/data/unix/archives/osn/admin" ""'
/david/admin

如果要将它们存储在shell变量中,请使用read而不是awk。

$ IFS='"' read _ name _ path _ <<< '2012/01/18 11:24 GMT+00:00 adm Add "/david/admin" "/apps
/data/unix/archives/osn/admin" ""'
$ echo $name
/david/admin
$ echo $path
/apps/data/unix/archives/osn/admin

答案 1 :(得分:0)

你的awk中有很多拼写错误,如上所述,他们没有给出你告诉他们的东西。 错误的awk -F'"' print {$4"}更正了awk -F'"' '{print $4}'。 这是我将如何存储到shell变量。

name=$(awk -F\" '{print $2}' file)
path=$(awk -F\" '{print $4}' file)