您好我是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
任何帮助将不胜感激。
答案 0 :(得分:1)
使用echo "$a"
保留变量的新行。变量的双引号版本(echo" $ variable")用于保留值的内部间距,与在变量换行符,制表符,多个空格和全部中表示的完全相同。另一方面,不带引号的版本(echo $ variable)用一个空格替换一个或多个空格,制表符和换行符的每个序列。