2012-05-17 15 views
7

いくつかのデータは、以下のようないくつかのSQLクエリによって返されます。区切り文字に基づいて行を区切り、新しい行に送信しようとしています。 ..私はシェルスクリプトを使用してみましたが、通じ作ることができませんでした...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 in s.split():' s'に文字列が含まれていればprint i – Levon

+0

はい、スペースが出力の一部として来ています...私はエクササイズを試みていますUNIXの場合 – Teja

+0

あなたが使用しているSQLツールで出力ラインセパレータを修正する方がよいでしょう。がんばろう。 – shellter

答えて

18

その特定例えば、tr ' ' '\n' < fileが動作するはずUNIXで次の操作を行います。

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すてきなシンプルなソリューションのために+1 – Levon

+0

twalberg ..簡単です..ありがとう.. :) – 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'sを使っていましたが、以前はコマンドラインオプションを見たことがありませんでした。 – Levon

+2

'-d'はOS X上の' xargs'のオプションではありません。私はそれを追加したいと思っていました... – 2rs2ts

+0

'xargs'には(隠された)欠点があります。プログラムがないときは'/bin/echo'を使います実行するのが指定されているので、実行頻度が高すぎます - パフォーマンス要素が顕著になるすべての入力要素 – poige

関連する問題