我如何可以單獨使用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