Разделение текста runon в скрипте

Вы можете просто использовать . в качестве разделителя полей:

awk -F. '{ print "User is " $2 ", SHELL is " $1 }' file.txt
0
23.03.2018, 03:53
2 ответа

Я вижу, что ответ пользователя steeldriver уже принят, но я решил предложить то, что я считаю более коротким, простым и удобным для чтения вариантом. По крайней мере, он демонстрирует некоторые другие особенности awk (, и ОП всегда может передумать ):

.
awk '
  { gsub(","," ")
    $0=gensub("([[:upper:]])([[:digit:]])","\\1 \\2","g")
    $0=gensub("([[:lower:]])([[:upper:]])","\\1 \\2","g")
    print
  }' file.csv
0
28.01.2020, 04:27

По крайней мере, сgawk(GNU awk )и mawkвы можете использовать функцию matchдля поиска индекса строчной -прописной или прописной -цифры перехода, а затем использовать substrперерезать -и -перекрыть струну:

awk -F, '
  {c = match($1,/[a-z][A-Z]/)} 
  c>0 {$1 = sprintf("%s %s", substr($1,1,c), substr($1,c+1))}
  {c = match($4,/[A-Z][0-9]/)} 
  c>0 {$4 = sprintf("%s %s", substr($4,1,c), substr($4,c+1))}
  1' file.csv
Xiao Li 6705462234 lxiao@unc.edu NC 764
Natkin Pook 8044344528 wnatkin@vcu.edu VA 22345
Elizi Moe 5208534566 emoe@ncsu.edu AZ 85282
Ma Ta 4345667345 mta@yahoo.com TX 91030
Diana Cheng 5203456789 dcheng@asu.edu WY 4587
Jackson Five 5206564573 jfive@ncsu.edu AZ 85483
Adi SrikanthReddy 6578904566 sadi1@asu.edu WS 67854

Если ваш $4действительно является почтовым индексом США, то, насколько мне известно, формат фиксирован, и вы можете пропустить второй matchи просто сделать

awk -F, '                                                                                          
  {c = match($1,/[a-z][A-Z]/)} 
  c>0 {$1 = sprintf("%s %s", substr($1,1,c), substr($1,c+1))} 
  {$4 = sprintf("%s %s", substr($4,1,2), substr($4,3))}
  1' file.csv

Это немного лучше, если у вас есть механизм регулярных выражений, который допускает утверждения нулевой -длины -, такие как Perl:

perl -F, -ne '
  print join " ", map { s/(?<=[[:lower:]])(?=[[:upper:]])|(?<=[[:upper:]])(?=[[:digit:]])/ /; $_ } @F
' file.csv
Xiao Li 6705462234 lxiao@unc.edu NC 764
Natkin Pook 8044344528 wnatkin@vcu.edu VA 22345
Elizi Moe 5208534566 emoe@ncsu.edu AZ 85282
Ma Ta 4345667345 mta@yahoo.com TX 91030
Diana Cheng 5203456789 dcheng@asu.edu WY 4587
Jackson Five 5206564573 jfive@ncsu.edu AZ 85483
Adi SrikanthReddy 6578904566 sadi1@asu.edu WS 67854
0
28.01.2020, 04:27

Теги

Похожие вопросы