2012-05-17 17 views
7

Mam niektóre dane, które są zwracane przez niektóre kwerendy SQL, które wygląda jak poniżej. Próbuję oddzielić linie na podstawie ogranicznika i wysłać go do nowej linii.Jak mogę to zrobić w systemie UNIX .. próbowałem za pomocą powłoki-włączony, ale nie mógł uczynić poprzez ...Podział wierszy na podstawie ogranicznika w systemie 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

Czy byłbyś otwarty na rozwiązanie bez skryptu bash? Byłoby to dość banalne w Pythonie itp., Np. 'For i in s.split(): print i' if' s' zawiera twój ciąg – Levon

+0

Tak, że przestrzeń przychodzi jako część danych wyjściowych ... Próbuję treningu w systemie UNIX .. – Teja

+0

lepiej naprawić separator linii wyjściowych za pomocą narzędzia SQL, którego używasz. Powodzenia. – shellter

Odpowiedz

18

dla tego konkretnego przykładu, tr ' ' '\n' < file powinno działać:

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

czy możesz opublikować to całkowicie ... – Teja

+1

+1 za fajne proste rozwiązanie – Levon

+0

Uwielbiam to twalberg .. Jest bardzo prosty i łatwe .. Dzięki .. :) – Teja

8

xargs jest prosty pojedynczy Program można użyć do tego, jak w:

$ 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 używałem 'xarg's od lat, nigdy nie patrzyłem na opcje wiersza poleceń wcześniej, wyraźnie pomyłka. – Levon

+2

'-d' nie jest opcją dla' xargs' na OS X. Pomyślałem, że dodam, że ... – 2rs2ts

+0

'xargs' ma (ukryty) minus - używa'/bin/echo' gdy żaden program do uruchomienia zostało określone, a zatem jest uruchamiane zbyt często - na każdym elemencie wejściowym z zauważalnymi karami wydajności – poige

Powiązane problemy