假设$2是我的变量。我已经尝试从
但它从打印某些东西到完全不打印任何东西。
awk -F\, '{print $2 ":"}'
为了
awk -F\, '{print gsub(/[ \t]+$/, "", $2) ":"}'
但它从打印某些东西到完全不打印任何东西。
你正在打印 gsub
的结果,但是 gsub
是对 $2
进行原地修改而不是返回修改后的副本。调用 gsub
,然后再打印:
awk -F\, '{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
}
要去掉$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 ":"}'
gawk -F\, '{$2 = gensub(/^[ \t]*|[ \t]*$/,"","g",$2)}'
Unix中的ltrim和rtrim
awk 'BEGIN{FS=OFS="|"} {gsub(/^[ \t]+|[ \t]+$/, "", $2)}1' filename.txt
awk -F'|' 'function trim(field){
gsub(/^ +| +$/,"", field);
return field
}{
OFS=",";
print trim($2),trim($3)}' stations > lista.csv
用这段代码就足够了
stations文件的结构如下:
1 | UTAR | U de Tarapacá
3 | VALN | Valparaíso
4 | JRGN | Junta Gorgino
6 | TRPD | Torpederas
awk -F\, '{gsub(/^[ \t]+|[ \t]+$)/, "", $2); print $2 ":"}'
。请注意强大的管道符号! :) - syntaxerror