如何使用awk为下面的
分隔逗号1, servername, url, Properties, hostname, version, os, application server.
我已将上述行保存在名为 test.properties 的文件中,并使用以下命令
awk '{ print $1 }' test.properties
我只想在输出中打印服务器名称,而是打印整行。
我应该使用cut来代替这种情况吗?
答案 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