我如何可以单独使用AWK逗号为以下如何使用awk忽略逗号?
1, servername, url, Properties, hostname, version, os, application server.
我已经保存在一个文件上线叫test.properties和使用下面的命令
awk '{ print $1 }' test.properties
,我只是希望将服务器名称打印在输出中,而是打印整行。
我应该用cut来代替这种情况吗?
我如何可以单独使用AWK逗号为以下如何使用awk忽略逗号?
1, servername, url, Properties, hostname, version, os, application server.
我已经保存在一个文件上线叫test.properties和使用下面的命令
awk '{ print $1 }' test.properties
,我只是希望将服务器名称打印在输出中,而是打印整行。
我应该用cut来代替这种情况吗?
考虑:
$ 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
是的,你应该使用cut来处理这种情况,这是它的设计目的。
谢谢埃德。你能解释我什么时候以及为什么要使用cut vs awk吗?感谢您的答复。 – SGR29
当您想使用1个字符的分隔符以与输入中出现的顺序相同的顺序打印字段时,使用'cut'。使用'awk'做其他事情。这样做的理由是简洁和高效。 –
您也可以使用如果您的字符串仅包含ASCII 0x20-0x7f
中的字符(反斜杠(\)除外)(由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
更改为字段分隔符为逗号'的awk -F,“yadayada'' – 123
如果你的例子打印整条生产线,你有一个更大的问题,因为AWK被打破。你的示例输入应该打印出'1'(不含引号)。我会建议重新安装它,然后再查看提供的任何解决方案 – grail