The UNIX and Linux Forums  

Go Back   UNIXおよびLinuxフォーラム > トップフォーラム > シェルプログラミングとスクリプティング
Googleのunix.com



シェルプログラミングとスクリプティング KSH 、 CSH 、 shに、 bashの、はPerl 、 PHPは、削除するsed 、 Awkの、他のシェルスクリプトやシェルスクリプト言語についての質問の投稿はこちら。

その他のUNIXおよびLinuxフォーラムトピックは参考にすること
スレッド スレッドスターター フォーラム 返信 最後の投稿
1つのファイルから別の転送データ inquisitive101 UNIXのダミー質問と回答のため 1 2009年1月5日 03:42午前
のFTP -データ転送の制限。 システム管理者 AIX 2 2006年12月20日 03:11午前
IPCのメカニズムでのデータ転送のプログラムですか? boris35 UNIXのダミー質問と回答のため 2 2005年5月26日 01:12午後
FTP転送でデータが破損 malcom UNIXの詳細&エキスパートのためのユーザー 12 2003年8月4日 08:38午前
どのくらいのデータを100で完全に転送されます 98_1LE UNIXのダミー質問と回答のため 3 2001年10月5日 10:48午前

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek を搭載 Powered by Google
 
LinkBack スレッドツール このスレッドを検索 スレッドを評価 表示モード
  #1固定リンク)  
Old 2009年1月5日
inquisitive101 inquisitive101 is offline
登録ユーザー
  
 

参加日: 2009年1月
投稿: 5
1つのファイルから別の転送データ

やあ、
私は比較的シェルスクリプトに新しいですが、アイブ氏はいくつかの基本的なスクリプトに取り組んで、簡単な状況ではUnixコマンドのほとんどを使った。しかし、私は今の私の理解を超えているようだが、タスクに直面しています。

私は、行や列の形で一部のデータを持つファイルがある:

123 4536 abcd4 677 BBBランクギンザグラフィックギャラリーはNNN 32425
343 5656 abcd6 566最も幅の広いfff ooo 56454
343 5645 abcd7 556ドライヤーlll .... 43536 jjj



のように

私はこのデータを選択すると、ほかのテキストを挿入file.Theコマンドでtable_xyz値( $ 1 、 ' $ b 'には、フォームに挿入される位置に挿入するコマンドに入れ、 ' $ c 'は、他のシェルスクリプトが必要)ここで、これらの変数は、上記のデータからのファイルの値となる。スクリプトの出力をする必要がありますが、多くの挿入ステートメントとしてそこには、データの行file.Asは、
table_xyz値( 123 、 4536 、 ' abcd4 ' 、 677 、 'に挿入先BBB ' 、 'ギンザグラフィックギャラリー' 、 'はNNN ' 、 32425 )
table_xyz値( 343 、 5656 、 ' abcd6 ' 、 566 、 'に挿入最も幅の広い' 、 ' fff ' 、 ' ooo ' 56454 )など

スクリプトの一部の配列を並べ替えてからか何かを反復処理中のデータを格納するか任意の支援、アドバイスをいただければ幸い大きく...

Thanx 、事前に
  #2固定リンク)  
Old 2009年1月5日
summer_cherry summer_cherry is offline Forum Advisor  
登録ユーザー
  
 

参加日: 2007年6月
所在地:中国北京
投稿数:1098
こんにちは、以下 perlの スクリプトを実行するには、手助けすることがあります
列の長さが固定されていないかどうか、もしそう、それらのトリムを削除できることを確認(と) 、との数<ので、必ず最長<すべての人の長い列の値に応じて利用するお客様の値の長さを示す。



コード:
format TOP=
insert into table_xyz values(@<<<<<,@<<<<<,trim('@<<<<<<'),@<<<<<,trim('@<<<<<'),trim('@<<<<<'),trim('@<<<<<<'),@<<<<<<);
$a $b $c $d $e $f $g $h
.
$~=TOP;
open FH,"<a.txt";
while(<FH>){
	($a, $b, $c, $d, $e, $f, $g, $h)=split(" ",$_);
	write;
}
close FH;

  #3固定リンク)  
Old 2009年1月5日
pludi's Avatar
pludi pludi is online now Forum Staff  
モデレータ
  
 

参加日: 2008年12月
場所: 。で
投稿数: 1968
この Perlの スクリプトを実行するに役立つかもしれない。 2つの引数を取ります:
  1. セパレータの例で' ( ' )で使用される
  2. テーブルの例で' ( ' table_xyz挿入するため)
データ自体は、標準入力から、 INSERTステートメントている印刷標準を読まれている。

コード:
#!/usr/bin/perl -W

use strict;
use warnings;

my $sep   = $ARGV[0];
my $table = $ARGV[1];
while ( my $line = <STDIN> ) {
    print "INSERT INTO $table VALUES(";
    my @line = split /$sep/, $line;
    for ( my $i = 0 ; $i < $#line ; $i++ ) {
        $_ = $line[$i];
        if (/\D/) {
            print '"', $_, '"';
        }
        else {
            print $_;
        }
        print ',' if $i < $#line - 1;
    }
    print ");\n";
}

あなたの例を挙げると
コード:
$ perl csv2sql.pl ' ' table_xyz < example.txt
INSERT INTO table_xyz VALUES(123,4536,"abcd4",677,"bbb","ggg","nnn");
INSERT INTO table_xyz VALUES(343,5656,"abcd6",566,"eee","fff","ooo");
INSERT INTO table_xyz VALUES(343,5645,"abcd7",556,"ddd","lll","jjj");
$

  #4固定リンク)  
Old 2009年1月5日
クリストフシュポーア Christoph Spohr is offline
登録ユーザー
  
 

参加日: 2008年09月
投稿数: 205
または単純なシェルスクリプトとして:


コード:
while read a b c d e f g h 
do 
    echo "insert into table_xyz values($a, $b, '${c}', $d, '${e}', '${f}', '${g}', $h)"
done < datafile

HTH返答クリス
  #5固定リンク)  
Old 2009年1月5日
inquisitive101 inquisitive101 is offline
登録ユーザー
  
 

参加日: 2009年1月
投稿: 5
みんなThanx .....

'を日試行されます...少なくとも今は知っている私はどちらの方向に移動する必要がある
  #6固定リンク)  
Old 2009年1月7日
inquisitive101 inquisitive101 is offline
登録ユーザー
  
 

参加日: 2009年1月
投稿: 5
[ OK ]をする方法については、私の場合、 。 csvファイルは、次のように新しいシナリオがある:

AとBはC 、エ
AとBはC 、エ
AとBはC 、エ
メール、 b 、 ç 、エ
メール、 b 、 ç 、エ
メール、 b 、 ç 、エ


b 3を挿入すると出力するクエリは、わずかに異なっています。例:

table_xyz値に挿入( 123 、 $ 1 、 ' abcd4 ' 、 601 、 $ b 、 $ ç 、 $ dの32425 )
table_xyz値に挿入( 124 、 $ 1 、 ' abcd4 ' 、 602 、 $ b 、 $ ç 、 $ dの32425 )
table_xyz値に挿入( 125 、 $ 1 、 ' abcd4 ' 、 603 、 $ b 、 $ ç 、 $ dの32425 )
table_xyz値に挿入( 126 、 $電子、 ' abcd4 ' 、 601 、 $ b 、 $ ç 、 $ dの32425 )
table_xyz値に挿入( 127 、 $電子、 ' abcd4 ' 、 602 、 $ b 、 $ ç 、 $ dの32425 )
table_xyz値に挿入( 128 、 $電子、 ' abcd4 ' 、 603 、 $ b 、 $ ç 、 $ dの32425 )

この問題は、クエリでは、第2 、第4のフィールドb印刷されるべき方法です。一方、第2フィールドBを3回繰り返してください(ファイル) 3 、第4回フィールド単位にデータの各ラインを読むと、そのファイルのすべての第3行の後のよ...

任意の提案を... ?シェルスクリプトが必要...

私はシェルスクリプトを変更するクリストフで与えてみたが出力されるデータは、同じ3のクエリには、ファイルの行に移動する前に何度でも繰り返しているような...
Closed Thread

ブックマーク

タグ
awkはAwkのトリムトリムトリムのAwk

スレッドツール このスレッドを検索
このスレッドを検索

高度な検索
表示モード このスレッド
このスレッド

投稿ルール
あなた ことができない。 新しいスレッドを投稿
あなた ことができない。 返信の投稿
あなた ことができない。 添付ファイルの投稿
あなた ことができない。 自分の投稿を編集

BBコード なる 〜の上に
スマイリー なる 〜の上に
[イメージ] コードは 〜の上に
HTMLコードは、 オフ
トラックバック なる 〜の上に
ピングバック なる 〜の上に
Refbacks なる 〜の上に




すべてGMT -4です。現在の時刻は 04:56午後


提供: vBulletin、著作権© 2000 - 2006、Jelsoft企業株式会社。言語翻訳による電源
vBCredits v1.4著作権© 2007 - 2008 、 PixelFXスタジオ
は、 UNIXおよびLinuxフォーラムのコンテンツ著作権© 1993 〜 2009 。すべての権利を管理しReserved.Ad RedTyger

コンテンツ関連のURLで vBSEO 3.2.0