数据附加在shell变量中

时间:2018-01-23 04:25:54

标签: bash shell awk grep

您好我是shell脚本的新手。我有这样的命令。

awk 'BEGIN{ print "Query" }
 /Executing command\(queryId/{ sub(/.*queryId=[^[:space:]]+: /,""); q=$0 }
 /s3:\/\//{ print q }' OFS=',' hive-server2.log

它完全打印输出。

select * from claimpfphdr limit 5
select * from claimpfphdr limit 5
select * from claimpfphdr limit 5

但是当我使用相同的命令将结果添加到变量中时,就像这样。

a=$(awk 'BEGIN{ print "Query" }
 /Executing command\(queryId/{ sub(/.*queryId=[^[:space:]]+: /,""); q=$0 }
 /s3:\/\//{ print q }' OFS=',' hive-server2.log)

它添加了不需要的值。这是上述shell变量的输出。

echo $a
Query select License.txt LogMX-64.exe LogMX.app LogMX.bat LogMX.exe Log_Copyier.sh Readme.txt config help hive-server2.log jar lib logmx.command logmx.sht1.sh test.txt test_result.txt from pfeevent limit 

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用echo "$a"保留变量的新行。变量的双引号版本(echo" $ variable")用于保留值的内部间距,与在变量换行符,制表符,多个空格和全部中表示的完全相同。另一方面,不带引号的版本(echo $ variable)用一个空格替换一个或多个空格,制表符和换行符的每个序列。