Как я могу обрезать пробел из переменной в awk? - PullRequest
24 голосов
/ 03 апреля 2012

Предположим, $ 2 - моя переменная. Я пытался перейти с

awk -F\, '{print $2 ":"}'

до

awk -F\, '{print gsub(/[ \t]+$/, "", $2) ":"}'

Но от печати чего-либо вообще ничего не происходит.

Ответы [ 6 ]

44 голосов
/ 03 апреля 2012

Вы печатаете результат gsub, но gsub выполняет модификацию на месте $2 вместо возврата измененной копии. Позвоните gsub, затем напечатайте:

awk -F\, '{gsub(/[ \t]+$/, "", $2); print $2 ":"}'
29 голосов
/ 26 ноября 2014

Эти функции пригодятся для улучшения читабельности.Они также возвращают усеченный результат:

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
} 

Источник: https://gist.github.com/andrewrcollins/1592991

16 голосов
/ 16 февраля 2014

(У меня недостаточно очков, чтобы прокомментировать предыдущий ответ напрямую.)

Для обрезки пробелов в конце из $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 ":"}'
3 голосов
/ 06 ноября 2015

Один вкладыш для gawk:

gawk -F\, '{$2 = gensub(/^[ \t]*|[ \t]*$/,"","g",$2)}'
1 голос
/ 06 июня 2016

трим и трим в Unix

awk 'BEGIN{FS=OFS="|"} {gsub(/^[ \t]+|[ \t]+$/, "", $2)}1' filename.txt

0 голосов
/ 07 июня 2018

Более простой вариант:

Вы должны определить функцию обрезки, использовать gsub для общей замены. Затем найдите с помощью регулярного выражения, если начинается или заканчивается пробелом (один или несколько раз), возвращает поле.

   awk -F'|' 'function trim(field){
   gsub(/^ +| +$/,"", field); 
   return field
   }{
   OFS=",";
   print trim($2),trim($3)}' stations > lista.csv

С этим кодом достаточно

И файл станций имеет такую ​​структуру:

     1 | UTAR | U de Tarapacá                   
     3 | VALN | Valparaíso                      
     4 | JRGN | Junta Gorgino                   
     6 | TRPD | Torpederas  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...