используя awk для преобразования столбца данных в строку - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь преобразовать столбцы данных в строку, используя nawk

input=
1775
1800
1825
200
2850
3050
3075
3175

Мой код:

nawk 'BEGIN{ORS=","}{print $0}'

, но вывод не включает весь набор данных в моемвходной файл. кто-нибудь может мне помочь через это ...?

вывод:

,2850,3050,3075,3175,

Ответы [ 2 ]

2 голосов
/ 04 октября 2019

Вы можете сделать это с помощью

nawk '{$1=$1}1' RS= OFS=, file > newfile

Это обрезает строку и заменяет все новые строки запятыми.

См. онлайн-демонстрацию :

input="
1775
1800
1825
200
2850
3050
3075
3175"

nawk '{$1=$1}1' RS= OFS=, <<< "$input"

Выход:

1775,1800,1825,200,2850,3050,3075,3175
0 голосов
/ 04 октября 2019

Не могли бы вы попытаться выполнить следующие действия.

awk -v OFS="," '
{ 
  gsub(/\r/,"")
  val=(val?val OFS:"")$0
}
END{
  print val
}
'  Input_file

Если посмотреть на попытку OP, похоже, что OP может быть в системе Sun os Solaris, если это так, измените значение awk на nawk

Объяснение:

Установка OFS as для получения выходных данных через запятую. Создание переменной с именем val, значение которой объединяется со своим собственным значением каждый раз с запятой. В разделе END этого кода выведите переменную val, чтобы разделить запятыми все строки в соответствии с требованиями OP.



Не тестировалось в Sun или попробуйте, если у вас есть команда вставки

tr -d '\r' < Input_file > temp && mv temp Input_file;paste -sd',' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...