- ベストアンサー
【Cシェル】ファイルの切取り/挿入方法
mphの回答
- mph
- ベストアンサー率54% (39/72)
Cシェルでって言っている以上、Cシェルのビルトインコマンドのみで実現したいのではないでしょうか? exやsedを使ったらshellだけじゃないっすよね。 {意地の悪い読み方 :-P } shellのみでは私は実現不可能かきわめて困難とおもいます。 私自身はawk使いなので単純な作業ならawk,そうでないならperl最後はyacc(bison)の順番で考えるとおもいます。 shellでの実装は最初から考えないです。 まあ、どちらにせよbeginとendの部分の詳しい構文ルールといろいろ編集の部分のやりたいことがわからないと最適なツールと実装方式は紹介できませんね。
関連するQ&A
- ファイル中の数行を抜き出す処理について(シェル)
ファイルaaa.txtの2行目から4行目を抜き出し、 ファイルbbb.txtに格納する方法として、 sed -n '2,4p' aaa.txt > bbb.txt がありますが、 変数を使用し、 start=2 end=4 sed -n '${start},${end}p' aaa.txt > bbb.txt とすると、エラーが発生します。 どうすればよろしいのでしょうか。
- ベストアンサー
- その他(プログラミング・開発)
- Cシェルでテキストファイルの行削除方法
現在、Cシェルの勉強をしていますが、ある文言に完全一致した行のみ削除する方法が分かりません。 例として、下記のようなファイルがあり、"AAA"を指定して削除しようとすると、"AAA_1"までも削除されてしまいます。 例)test.txt AAA aaa AAA_1 aaa BBB bbb CCC ccc お手数ですがご教授いただけると幸いです。 以上、宜しくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- シェル:大量の比較方法に困ってます
ファイル容量毎にフラグを付与したいと思ってます。 しかし、区分けが多いので判断する方法がわかりません。 例) 容量 ファイル名 13 aaa.txt 53 bbb.txt 153 ccc.txt 800 ddd.txt 1200 eee.txt ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 容量 ファイル名 フラグ 13 aaa.txt 0 53 bbb.txt 500 173 ccc.txt 1500 830 ddd.txt 8000 1220 eee.txt 10000 【判断基準】 容量 フラグ 1~50 0 51~100 500 101~150 1000 151~200 1500 201~250 2000 ・ ・ ・ 4901~4950 40000 4951~5000 45000 最終は5000まで判断させたいのですが記述方法がわかりません。 少ない判断でよければ cat aaa.log | awk 50<$2 '{print $2,"50",$3}' | awk $2<100 '{print $2,"50",$3}' な感じで挑戦してみたのですが・・・・。 ご教授お願いします
- ベストアンサー
- Linux系OS
- unixのシェルでファイル内容を読み込む
ど初心者です。わかりづらいかもしれませんが宜しくお願いします。 以下のような処理を行いたいと考えています。 (1) aaa.sh(シェルスクリプト)にてバッチプログラムを起動 (2)バッチでエラーの場合、結果ファイル(bbb.txt)に「1」を出力する。 (3)aaa.sh(シェルスクリプト)にて結果ファイルの内容を読み取り「1」の場合は、再度バッチプログラムを起動する。 このうち(3)の処理にて、結果ファイルの読み込み方法がわかりません。 調べた結果、以下のような処理で可能なようですが・・ while read LINE; do echo $line done < aaa.txt 読み込むのは1行なので、ループ処理にはしたくないのですが、例えば「read LINE aaa.txt」のような簡単なコマンドで、ファイルの中身を読み込むことはできないのでしょうか? 実はUNIXが初めてで、しかもスケジュールに余裕がないため焦っております。 なにぶん知識不足な故、ちんぷんかんぷんな質問かも知れませんが、よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- 二つのファイルから一行ずつ取り出して計算
aaa.txt と bbb.txtというファイルがあり、それぞれ 1.1 0.1 -0.2 0.9 … といった感じで一行ずつ数値が入っています。 シェルスクリプトを用いて、 この二つのファイルから一行ずつ取り出して足し算を行いたい (例えばaaa.txtの一行目が1.1、bbb.txtの一行目が0.9なら1.1+0.9=2.0) のですが、どうすれば良いでしょうか。
- ベストアンサー
- Linux系OS
- シェルスクリプト(bash)によるファイルの編集
シェルスクリプト(bash)によるファイルの編集についてのご相談です。 私にあまりスクリプトの知識がないので申し訳ございませんが、 どなたかお知恵を拝借させてください。 よろしくお願いします。 【条件】 ・以下のような文字列を含むファイルが複数あるとします。 ・そして、その文字列は、ファイル内の不特定の行に存在します。 ※[半角スペース]、[タブ]は実際には便宜上記載していますが、実際は 本当の半角スペース、タブが入ります。 AAA[半角スペース]BBB AAA[半角スペース]CCC AAA[タブ]BBB AAA[タブ]CCC 【やりたいこと】 このとき、 AAA[半角スペース]BBB および AAA[タブ]BBB の行の下に、それぞれ、 AAA[半角スペース]DDD と AAA[タブ]DDD を挿入したいのですが、これをスクリプト(コマンド)でどのように行えば よいのかわからずに困っています。
- 締切済み
- Linux系OS
- 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埋め どなたか教えてください。よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- シェルでファイルの最下行を削除する方法
シェルでファイルの最下行を削除する方法 シェルで、ファイルaaa.txtの最下行を削除したいです。これを1行で実現したいです。 exには-cってオプションがあるので、ex -c '$d' aaa.txt などと試してみましたがダメでした。 ;(コロン)や&&でつなぐのは、1行ではないって事でお願いします。 >cp aaa.txt tmp && sed '$d' tmp >aaa && rm tmp #こういうのは無しって意味です。 事前にスクリプトや、それ専用のバイナリを用意しておくのも無しでお願いします。なるべく汎用的な どこのUNIXにでもあるようなコマンドで実現したいです。
- ベストアンサー
- その他(プログラミング・開発)
- C言語でのファイル検索&ファイル書き換えについて
C言語である特定のフォルダを指定して、その階層内(サブフォルダも含む)にあるファイル、例えばsample_nameをファイル名に含むファイルを見つけ、そのファイル内の例えば下のような書き換えを行えるようなプログラムはどうつくればいいのでしょうか。 元ファイル ~sample_name1.txt~ aaa, 10 bbb, 20 ccc, 30 ~sample_name2.txt~ aaa, 30 ccc, 12 bbb, 20 ddd, 15 上のように各ファイルにaaaやbbbが共通に含まれています。 対象ファイル:sample_name 対象文字列:aaa 変換後:100 変換後ファイル ~sample_name1.txt~ aaa, 100 bbb, 20 ccc, 30 ~sample_name2.txt~ aaa, 100 ccc, 12 bbb, 20 ddd, 15
- ベストアンサー
- C・C++・C#
- シェルスクリプトの引数について
test.sh '*.c' といったコマンドを入力した時に、 シェルスクリプト内で引数$1を受け取ったときに$1='*.c'となるのではなく、 カレントディレクトリ内にある'*.c'の正規表現にマッチするファイルが入ってしまっています。 例)カレントディレクト内にaaa.cファイルbbb.cファイルといったファイルがある時は、 $1=aaa.c bbb.cとなっています。 '*.c'の正規表現自体をシェルスクリプト内で受け取る方法はないのでしょうか? シェルはbashを使用しています。
- ベストアンサー
- その他(プログラミング・開発)
お礼
ありがとう御座いました。