リストファイルの列の操作

このQ&Aのポイント
  • リストファイルの列の操作について知りたいです。シェルスクリプト(Bシェル)の中で、カンマ区切りのリストファイルを別の形式に変換する方法を教えてください。
  • forやwhileではなく、sedやawkを使ってリストファイルの列の操作を効率的に行う方法を知りたいです。
  • 特定の列を削除して他の列に文字列を挿入する方法を教えてください。
回答を見る
  • ベストアンサー

リストファイルの列の操作

シェルスクリプト(Bシェル)の中で、 例えば以下のようなカンマ区切りのリストファイルを ---------------- a1,b1,c1 a2,b2,c2 a3,b3,c3 a4,b4,c4 a5,b5,c5 a6,b6,c6 a7,b7,c7 a8,b8,c8 a9,b9,c9 a10,b10,c10 ---------------- 以下のように変換する方法が知りたいです。 ---------------- xx,a1,b1 xx,a2,b2 xx,a3,b3 xx,a4,b4 xx,a5,b5 xx,a6,b6 xx,a7,b7 xx,a8,b8 xx,a9,b9 xx,a10,b10 ---------------- ※3列目を削除して、1列目に"xx"の文字列を挿入。 forやwhileで1行ずつ読み込んで処理するのではなく、 sedやawk等を用いてズバッと変換する方法が知りたいです。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

awk -F, 'BEGIN{OFS=","};{print "xx",$1,$2}' data.txt > conv.txt

harahachi
質問者

お礼

ありがとうございます。 そのままだとエラーになってしまいましたが、これをヒントにして解決できました。 ↓こうしました。 awk -F, '{print "XX,"$1","$2}' data.txt > conv.txt

関連するQ&A

  • エクセルで二つの列を一つの列にコピー

    A列とB列を、まとめてC列に以下のようにコピーしたいのですが。 C1にA1 C2にB1 C3にA2 C4にB2 C5にA3 C6にB3 ・・・ ・・・ C99にA50 C100にB50 一括して行う方法を教えて頂きたいのですが。 よろしくお願いします。

  • 文字列を大文字の2桁ごとのコンマ付き16進数に変換する方法

    文字列を大文字の2桁ごとのコンマ付き16進数に変換する方法がわかりません。ただ単に文字列を16進数に変更するだけならbin2hex()でできますけど、誰か知っている方はいませんか?具体的には、変換された文字列が1a2b3c4d5e6fなら、1A.2B.3C.4D.5E.6Fと変換したいんです。どうすればいいですか?

    • ベストアンサー
    • PHP
  • 特定の文字列が含まれているかどうか確認したい

    文字列 $a に、文字列 $b が含まれているかどう確認したいと思っています。 $a = "abcdefg"; $b = "cde" なら「真」としたいです。 (要するに、シェルの case や fgrep に似たことをしたい) ただし、文字列には記号が含まれている可能性もあるため、 正規表現も使いづらい(?)です。 具体的にやりたいことは、$a にはコンマ区切りのメールアドレスのリストが入っていて、 $b のメールアドレスが $a のリストに含まれていない場合のみ、$b を $a似追加すると いうことがやりたいです。 何か良い方法はないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • CSVファイルの列抽出について

    以下のCSV形式のファイルにて 左から4・6つ目の列(カンマにて区切られています)を 「sed」等にて抜き取ることは可能でしょうか? よろしくお願いします。 09/16/2006,9570.461538,0,9570.461538,99.44966667,99.997,99.72333333,0,0, 09/17/2006,9570.461538,0,9570.461538,99.44966667,99.997,99.72333333,0,0, 09/18/2006,9570.461538,0,9570.461538,99.44966667,99.997,99.72333333,0,0,

  • 続・2つのセル同士内の文字列比較

    エクセルで以下のような構成になっています。 A1:郷田たけしはのび太の友達 B1:たけし,しずか C1:たけし A2:隣野しずかはのび太の将来のお嫁さん B2:しずか,のび太 C2:しずか,のび太 A3:のび太とドラえもんはとても仲良し B3:のび太,ドラえもん,仲良し C3:のび太,ドラえもん,仲良し B列のカンマで区切られた文字列を元にA列内を検索し、 C列内に結果を表示したいのですが、エクセルか アクセスでの結果取得方法をご教授下さい。 因みにB列には20キーワードほどカンマ区切り文字が記入されている想定です。

  • エクセルでカンマ区切り文字を各行に分解するマクロを書きたい

    WindowsXP Excel2003 エクセルで以下ができるマクロを書きたいです。 B列にはカンマ区切りで文字列が入っています。 カンマ区切りの数は行によって様々です。 この表をB列のカンマ区切り文字を各行に分解したいです。 その際、A列とC列は分解前の値と同様です。 このようなマクロは書けますかね? A列     B列     C列 あ     a,b,c    100 い     d,e     200 う     f      300 え     g,h     400     ↓ A列     B列     C列 あ     a      100 あ     b      100 あ     c      100 い     d      200 い     e      200 う     f      300 え     g      400 え     h      400

  • 「,」が入った文字列に「"」が付いてしまう現象

    MySQLに大量データをload data infile~でインポートしようとしています。 下準備として、エクセルデータをタブ区切りデータに変換します。 そのときに、 カンマを使っている文字列の前後に、 ダブルクォーテーションが引っ付いてしまいます。 こんな感じ a,b,c,d,e   ↓ "a,b,c,d,e" 「"」を付けずにタブ区切りに出力する方法が知りたいです。。 *カンマは、どうしても使いたい文字です。 *実際に「"」をデータとして持っているので、 単に置換機能で削除するということはできません。 主に、エクセルの処理なのですが、同じ問題で詰まった経験者が居そうなこのカテゴリに質問させていただきました。 ご了承ください。 良い対処法をお持ちの方、よろしくお願いします。

    • ベストアンサー
    • MySQL
  • csvファイルからの読み込みがスムーズにできません

    fscanfでCSVファイルから文字列を取り込み、カンマ区切りで4つの変数に文字列を代入しようと考えているのですが、出力されたcsvファイルが変わった区切りかたをしているのでうまく変数に代入できずに困っております。 例えば、出力されたcsvファイルは以下のようになっております "ABC CO.,I","4540",""STAR"","2010/03/31" 希望としては aにABC CO.,I bに4540 cにSTAR dに2010/03/31 をそれぞれ代入したいのですが aに入る文字列にはCO.,Iというようにカンマが既にありますので カンマ区切りで読み込むとめちゃくちゃになってしまいます ですので基準をダブルクオーテーションに置き、"と"の間の文字列を代入というような形が取れれば良いのですが、このような方法での文字列取得は可能でしょうか? c言語の勉強を始めて間もない為、低レベルな質問、表現であることをお許し下さい。 よろしくお願いします。

  • sed,awkでのデータ抽出方法

    教えてください。 awk,sed,シェルを使い、カンマ区切りのファイルの1カラム目と2カラム目をキーに、 あるファイルに含まれる行を削除するにはどうすればよいのでしょうか? 例) --aaa.csv-- 111,222,333,444 555,666,777,888 999,000,111,222 --file1.txt-- 111222 555666 の場合、aaa.csvより下記行のみほしい。 999,000,111,222 ご存知でしたら、ご教授ください。 よろしくお願いします。

  • UNIXのcshについて。

    ちょっとここに質問していいものか迷いましたが、 このカテゴリで質問させていただきます。 UNIXのCシェルで、あるシェル変数に1行分のデータが 読み込まれていて、これをいくつかのデータがタブ 区切りで入っています。 これを違う複数の変数に各データを切り分けて入れた いのですが、どうしたらいいかわかりません。 awkやsedという手を考えたのですが、あれはファイルから 読み込むので、できませんでした。 わかる方がいらっしゃればよろしくお願いします。

専門家に質問してみよう