假設$ 2是我的變量。我試圖從如何從awk中的變量中裁剪空白?
awk -F\, '{print $2 ":"}'
要
awk -F\, '{print gsub(/[ \t]+$/, "", $2) ":"}'
但它從打印的東西打印什麼都沒有變。
假設$ 2是我的變量。我試圖從如何從awk中的變量中裁剪空白?
awk -F\, '{print $2 ":"}'
要
awk -F\, '{print gsub(/[ \t]+$/, "", $2) ":"}'
但它從打印的東西打印什麼都沒有變。
您正在打印gsub
的結果,但gsub
執行了$2
的就地修改,而不是返回修改後的副本。呼叫gsub
,然後打印:
awk -F\, '{gsub(/[ \t]+$/, "", $2); print $2 ":"}'
(我沒有足夠的積分,在以前的答案直接評論。)
要在末$2
使用修剪空白:
awk -F\, '{gsub(/[ \t]+$/, "", $2); print $2 ":"}'
修剪空白開始$2
使用:
awk -F\, '{gsub(/^[ \t]+/, "", $2); print $2 ":"}'
而對於兩端和開頭:
awk -F\, '{gsub(/^[ \t]+/, "", $2); gsub(/[ \t]+$/, "", $2); print $2 ":"}'
這些功能派上用場,以提高可讀性。他們還返回修剪結果:
function ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s }
function rtrim(s) { sub(/[ \t\r\n]+$/, "", s); return s }
function trim(s) { return rtrim(ltrim(s)); }
BEGIN {
# whatever
}
{
# whatever
}
END {
# whatever
}
謝謝!正如你所說,我的代碼變得易讀。 – haper 2016-12-08 09:01:59
一個一個襯裏GAWK:
gawk -F\, '{$2 = gensub(/^[ \t]*|[ \t]*$/,"","g",$2)}'
LTRIM和Unix的
awk 'BEGIN{FS=OFS="|"} {gsub(/^[ \t]+|[ \t]+$/, "", $2)}1' filename.txt
RTRIM看起來第三行可以縮寫爲'awk -F \',{gsub(/^[\ t] + | [\ t] + $)/,「」,$ 2);打印$ 2「:」}''。介意強大的管道標誌! :) – syntaxerror 2015-07-24 06:35:26