我如何使用awk忽略逗号?

时间:2017-06-14 18:32:14

标签: linux bash shell awk scripting

如何使用awk为下面的

分隔逗号
1, servername, url, Properties, hostname, version, os, application server.

我已将上述行保存在名为 test.properties 的文件中,并使用以下命令

awk  '{ print $1 }' test.properties

我只想在输出中打印服务器名称,而是打印整行。

我应该使用cut来代替这种情况吗?

3 个答案:

答案 0 :(得分:1)

假设:

$ echo "$txt"
1, servername, url, Properties, hostname, version, os, application server

只需将字段分隔符正确设置为逗号:

$ echo "$txt" | awk -F, '{print $1}'    
1

或者,正如您所说,使用cut

$ echo "$txt" | cut -d , -f1    
1

答案 1 :(得分:0)

是的,你应该在这样的情况下使用cut,这就是它的目的。

答案 2 :(得分:-2)

如果你的字符串只包含ASCII 0x20-0x7f中的字符,除了反斜杠(\)0x5c,你也可以使用bash内置函数(注意Stéphane Chazelas提到的有关处理shell变量的注意事项):

s='1, servername, url, Properties, hostname, version, os, application server'
IFS=', ' read _ server _ <<<"$s"
echo "'$server'"

输出:

'servername'

或者使用位置参数:

oIFS="$IFS"
export IFS=', '
set -- $s
echo $2
IFS="$oIFS"

或者:

function getserver() (
  export IFS=', '; set -- $1; echo $2
)
getserver "1, servername, url, Properties, hostname, version, os, application server"

输出:

servername