Удалить пробел после запятой, используя FPAT Var - PullRequest
1 голос
/ 25 марта 2020

Вот мой код

 BEGIN {
         FPAT="([^,]+)|(\"[^\"]+\")"
 }
 {
 print "NF = ", NF
 for (i = 1; i <= NF; i++) {
         printf("$%d = <%s>\n", i, $i)}
 }

И вывод:

NF =  3
$1 = <Johny Bravo>
$2 = < Chief of Security>
$3 = < 417-555-66>

Есть пробел перед строкой. Как удалить этот пробел? Пробел во вводе - это пробел после ",". Входные данные из .txt файла, который содержит запись типа:

Johny Bravo, Chief of Security, 417-555-66

Ожидаемый вывод

NF =  3
$1 = <Johny Bravo>
$2 = <Chief of Security>
$3 = <417-555-66>

1 Ответ

1 голос
/ 25 марта 2020

Преобразование моего комментария в ответ, чтобы решение было легко найти для будущих посетителей.

Вы можете позвонить gsub внутри for l oop, чтобы удалить начальные и конечные пробелы из каждого поля.

s='Johny Bravo, Chief of Security, 417-555-66'

awk -v FPAT='("[^"]+")"|[^,]+' '{
   for (i = 1; i <= NF; i++) {
      gsub(/^ +| +$/, "", $i)
      printf("$%d = <%s>\n", i, $i)
   }
}' <<< "$s"

$1 = <Johny Bravo>
$2 = <Chief of Security>
$3 = <417-555-66>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...