2012-05-17 3 views
7

У меня есть некоторые данные, которые возвращаются некоторым SQL-запросом, который выглядит как ниже. Я пытаюсь отделить строки на основе разделителя и отправить его в новую строку. Как я могу сделать это в UNIX .. Я попытался с помощью оболочки-сценариев, но не мог сделать через ...Разделительные линии на основе разделителя в UNIX

ALB|1001|2012-04-15 ALB|1001|2012-04-14 ALB|1001|2012-04-16 ALB|1001|2012-04-17 


ALB|1001|2012-04-15 
ALB|1001|2012-04-14 
ALB|1001|2012-04-16 
ALB|1001|2012-04-17 
+0

Не могли бы вы открыть не-bash-скрипт? Это было бы довольно тривиально в Python и т. Д., Например, 'for i в s.split(): print i' if' s' содержит вашу строку – Levon

+0

Да, это пространство подходит как часть вывода ... Я пытаюсь тренироваться в UNIX .. – Teja

+0

лучше исправить выходную строку-разделитель на SQL-инструменте, который вы используете. Удачи. – shellter

ответ

18

для этого конкретного примера, tr ' ' '\n' < file должен работать:

echo "ALB|1001|2012-04-15 ALB|1001|2012-04-14 ALB|1001|2012-04-16 ALB|1001|2012-04-17" | tr ' ' '\n' 
+0

вы можете разместить его полностью ... – Teja

+1

+1 для приятного простого решения – Levon

+0

Любимый twalberg .. Его очень простой и easy .. Спасибо .. :) – Teja

8

xargs простой сингл программу, которую вы можете использовать для этого, например:

$ echo "ALB|1001|2012-04-15 ALB|1001|2012-04-14 ALB|1001|2012-04-16 ALB|1001|2012-04-17"|xargs -d' ' -n1 
ALB|1001|2012-04-15 
ALB|1001|2012-04-14 
ALB|1001|2012-04-16 
ALB|1001|2012-04-17 
+0

+1 использовал 'xarg' в течение многих лет, никогда не смотрел на параметры командной строки раньше, явно ошибку. – Levon

+2

'-d' не является опцией для' xargs' на OS X. Просто подумал, что я бы добавил, что ... – 2rs2ts

+0

'xargs' имеет (скрытый) недостаток - он использует'/bin/echo', когда никакая программа был указан, и поэтому он слишком часто запускается - на каждом элементе ввода с заметными штрафами за производительность – poige

Смежные вопросы