Cシェルでのファイル編集について

このQ&Aのポイント
  • Cシェルを使用して、ヘッダとトレイラを含むファイルを加工するプログラムを作成したいです。
  • ヘッダの3項目めとトレイラの2項目めから4項目めを、5桁になるように左0埋めしてください。
  • どなたか教えていただけると幸いです。
回答を見る
  • ベストアンサー

Cシェルでのファイル編集について

Cシェルについて、すみませんが教えてください。。 AAA,BBB,1 1,data1,0000 2,data2,0000 3,data3,0000 4,data4,0000 ・・・ CCC,15,2,13 上記のようなヘッダ1行+データN(ここでは13行とする)行+トレイラ1行で 構成されているファイルがあり、このヘッダとトレイラを以下のようなファイル に加工するプログラムをCシェルで作成したいのですが、全く見当がつきません。 AAA,BBB,00001 1,data1,0000 2,data2,0000 3,data3,0000 4,data4,0000 ・・・ CCC,00015,00002,00013 ※ヘッダの3項目めを5桁になるように左0埋め ※トレイラの2項目めを5桁になるように左0埋め ※トレイラの3項目めを5桁になるように左0埋め ※トレイラの4項目めを5桁になるように左0埋め どなたか教えてください。よろしくお願いいたします。

noname#229153
noname#229153

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

  • ベストアンサー
  • trapezium
  • ベストアンサー率62% (276/442)
回答No.2

どうせデータが実際のものじゃないだろうからな。具体的に書いても無駄かもと思うじゃない。 awk -F, '/^[1-9]/{print;next} NR==1{printf "%s,%s,%05d\n",$1,$2,$3} END{printf "%s,%05d,%05d,%05d\n",$1,$2,$3,$4}' file

noname#229153
質問者

お礼

ご回答ありがとうございます!解決できました。 awkだとこのような書き方があるのですね。勉強になりました。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

Cシェルだけだと難しいので、awkかPerlかなんかを使えばいいかと。 if 今の行はヘッダ { @a=split(/,/):printf "%s,%s,%5d\n", $a[0], $a[1], $a[2] ;} のような感じで(perlの例)。

noname#229153
質問者

お礼

すみません。初心者なもので、実際のプログラムで詳しく教えていただけると助かります。。

関連するQ&A

  • シェルスクリプト(bash)によるファイルの編集

    シェルスクリプト(bash)によるファイルの編集についてのご相談です。 私にあまりスクリプトの知識がないので申し訳ございませんが、 どなたかお知恵を拝借させてください。 よろしくお願いします。 【条件】 ・以下のような文字列を含むファイルが複数あるとします。 ・そして、その文字列は、ファイル内の不特定の行に存在します。 ※[半角スペース]、[タブ]は実際には便宜上記載していますが、実際は 本当の半角スペース、タブが入ります。 AAA[半角スペース]BBB AAA[半角スペース]CCC AAA[タブ]BBB AAA[タブ]CCC 【やりたいこと】 このとき、 AAA[半角スペース]BBB および AAA[タブ]BBB の行の下に、それぞれ、 AAA[半角スペース]DDD  と   AAA[タブ]DDD を挿入したいのですが、これをスクリプト(コマンド)でどのように行えば よいのかわからずに困っています。

  • Cシェルでテキストファイルの行削除方法

    現在、Cシェルの勉強をしていますが、ある文言に完全一致した行のみ削除する方法が分かりません。 例として、下記のようなファイルがあり、"AAA"を指定して削除しようとすると、"AAA_1"までも削除されてしまいます。 例)test.txt AAA aaa AAA_1 aaa BBB bbb CCC ccc お手数ですがご教授いただけると幸いです。 以上、宜しくお願い致します。

  • シェルスクリプトについて

    シェルスクリプトについて Linuxで先頭にスペースが入っている行をひとつ上の行につなげたいと考えています。 その場合、シェルスクリプトはどのように書けばよいかご教示願います。 【ファイル内容】 aaa △bbb ccc ddd (b行の先頭のみスペース(△)が入っています。) 【変換後のファイル】 aaa bbb ccc ddd

  • UTF-8ファイルの文字化けについて

    UTF-8のファイルをADODB.STREAMを使って読み込むマクロを組みました。 読み込むファイルはいくつかのパターンがあるのですが、 正常に処理できるパターンのファイルと、できないパターンのファイルがあるようなんです。 そのファイルをメモ帳で開いて見比べてみると、 正常に処理できるファイルは 2013,01,25 ・・・ヘッダー行 タイトル1,タイトル2,タイトル3 ・・・タイトル行 aaa,BBB,123           ・・・データ行 bbb,CCC,25 という形式になっており、 エラーになるファイルは、 2013,01,25 ・・・ヘッダー行 "タイトル1","タイトル2","タイトル3" ・・・タイトル行 aaa,BBB,123           ・・・データ行 bbb,CCC,25 というふうに、タイトル行のみがダブルクォーテーションで囲まれていました。 エラーになるファイルは、 ヘッダー行は正常に読み込まれているみたいなのですが、 タイトル行以下が全て文字化けしているようなんです。 やはりダブルクォーテーションの影響なのでしょうか。 ご教授いただけると助かります。 よろしくお願いいたします。

  • テキスト処理のシェルプログラム

    UNIXシェルもしくはPerlでテキスト処理のシェルスクリプト を作成したいのですがご教授お願いします 1000行あるテキストファイルを 2行単位で区切り2行単位で横一列へ置換しテキストへ出力したいのですが 例 処理前 aaa bbb ccc ddd eee fff 処理後 aaa,ccc,eee bbb,ddd,fff ご教授よろしくお願いします

  • 行数ごとに検索をかけて並び替えをしたいのですが・・

    数千のファイル名が書かれたテキストファイルがあります。(Aとします。) /yyy/ccc.txt /aaa/aaa.txt /bbb/bbb.txt /sss/aaa.txt /ccc/bbb.txt /zzz/ccc.txt ・ ・ ・ ユニークファイル名だけ書かれたファイルがあります。(Bとします。) aaa.txt bbb.txt ccc.txt ・ ・ ・ Bの行数1行ずつAで検索をかけ、ファイル名を新しいファイル(Cとします)に書き出したいのです。 /aaa/aaa.txt /sss/aaa.txt /bbb/bbb.txt /ccc/bbb.txt /yyy/ccc.txt /zzz/ccc.txt ・ ・ ・ シェルを使ってやりたいのですが、どのようにすればいいのか見当もつきません。 どなたかお分かりのかたいましたら教えてください。よろしくおねがいします。

  • シェルで特定行を処理する方法を教えてください。

    初めてご質問させていただきます 数時間考えましたが、全くできない初心者です。 awkとかも使ってみましたが・ちんぷんかんぷんです。 よろしくお願いいたします。 環境:RedHat、シェル:bash [やりたいこと] 特定の文字以外から始まる行を、 特定文字から始まる行へ連結させたい。 (例  aaaから始まっていない行(bbb、ccc、ddd)を、  aaaから始まる行へ出力させる。 ■元となるテキストファイル ============ aaa bbb ccc ddd aaa aaa aaa eee aaa ============ ■整形後のファイル ============ aaabbbcccddd aaa aaa aaaeee aaa ============

  • データ整理のシェルスクリプト

    AAA AAA BBB BBB CCC CCC 上記のようなデータがテキストで1万行程度あります。このデータを AAA@hoge.com AAA BBB@hoge.com BBB CCC@hoge.com CCC 上記のような形にしたいのです、hoge.comとAAAの間はTabです。 スクリプト1発で可能でしょうか、それともテキストエディタ+エクセルでやらなければならないでしょうか? お分かりになる方、方法等教えてください。 よろしくお願いします。

  • bashシェルについて

    bashシェルを利用しまして aiueoディレクトリ内にあります、 aaa bbb ccc abc acb bac bca cba cab というファイル内に記載されています、 123456789 という文字列を 987654321 に変更したいと考えます。 どのようなスクリプトを構成すれば、 上記の内容がクリアーできますでしょうか? よろしくお願いします。

  • ★Bシェルのファイルマージについて

    ★Bシェルのファイルマージについて 「ファイルA」の一部項目と「ファイルB」の全ての項目を結合し「ファイルC」を 作成するプログラムをBシェルで作成したいのですが、方法がわかりませんので、 どなたかご教授頂けませんでしょうか。 ファイルA.txt 20100904 0 aaa bbb ファイルB.txt ccc 1111 2222 3333 ddd 1111 2222 3333 eee 1111 2222 3333 ファイルA.txtの「20100904 0」をファイルB.txtの各行の先頭に 結合しファイルC.txtを作成する。 ファイルC.txt 20100904 0 ccc 1111 2222 3333 20100904 0 ddd 1111 2222 3333 20100904 0 eee 1111 2222 3333 以上、よろしくお願い致します

専門家に質問してみよう