• 締切済み

cシェルで指定行の文字列加工について

cシェルで指定行の文字列加工について cシェルについて、以下のような加工をしたいのですがうまくいきません。 どなたか教えてください。 (1)1行目をMAX20byteになるように残りスペース埋め 最終行をMAX20byteになるように残りスペース埋め  A,000,000,000,000(改行)  ・(改行)  ・(改行)  ・(改行)  C,000,000(改行)        ↓  A,000,000,000,000 (改行)  ・(改行)  ・(改行)  ・(改行)  C,000,000 (改行) (2)1行目をMAX17byteになるように後半のスペースを削除   最終行を9byteになるように後半のスペースを削除   A,000,000,000,000 (改行)  ・(改行)  ・(改行)  ・(改行)  C,000,000 (改行)    ↓  A,000,000,000,000(改行)  ・(改行)  ・(改行)  ・(改行)  C,000,000(改行) すみませんが、よろしくお願いします(>_<)

noname#229153
noname#229153

みんなの回答

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

前にも書きましたが、cshだけでやるのは、かなり面倒です。 >(1)1行目をMAX20byteになるように残りスペース埋め >最終行をMAX20byteになるように残りスペース埋め 1行目/最終行が最初から20byte以上ある場合はどうするのですか? 20byte以内のなら、printfが使える言語(や、bash等のシェル)を使うのが簡単です。 > (2)1行目をMAX17byteになるように後半のスペースを削除 >  最終行を9byteになるように後半のスペースを削除  これも、「とにかく文末のスペースを削除」なのか「削除した上で、17/9byteでなかったら越えていたら調整する」なのかでやり方が変わってきます 単に、文末スペースを削除するだけなら、sedコマンドだけでできます。 sed -e '1s/ *$//;$s/ *$//' 正確に言えば、 man csh で表示されるマニュアルに書いてあるコマンドだけで作ったものが「cshでできること」です。 他のものは「外部コマンド」と言って、cshではありません。 ちょっと複雑なことをしようとすれば外部コマンドを使うことになります。 どんな外部コマンドが使えるかは、その環境次第です。一般的なunix系OSならsed等はインストールされていますが、なんかの目的で入れていないかもしれません。 あと、cshってあまりシェルスクリプトには使われません。

noname#229153
質問者

お礼

そうなんですね!ご回答ありがとうございます。けんとうしてみます。

関連するQ&A

  • エクセルVBA 文字列複数行・列連続連結

    エクセルVBA 文字列複数行・列連続連結でお教え下さい A列に基本文字(縦順) B列~F列に複数行データー(文字・時間) 文字結合時に改行 例 A2&B2&改行&A3&C2&改行&A4&D2&改行・・・・・ 次のデーター行 A&B3&改行&A3&C3&改行&A4&D3&改行・・・・・ データーの最終行まで連続で このような複数行あるデーターの連続文字列連結をしたいのですが・・・ 文字列連結後は 1.指定セルに貼り付け 2.クリップボードに貼り付け 3.テキストファイルに保存 よろしくお願い致します

  • Cシェルの文字列操作について

    初心者ですが、Cシェルで、 最大7バイトの文字列('25'とか'1234567')を左空白埋めで表示したいのですがどうしたらよいでしょうか。 (7 - (文字列のバイト数))×空白 + 文字列 ??

  • awkで改行を除いて文字列を抜きだす

    こんにちは。 UNIXユーザーです。 awkでテキストファイルから行、列を指定して、文字列を抜き出し、それをシェルで変数として定義したいのですが、各行の最終列(最も右の列です)を指定すると、抜き出した文字列の末尾に’^M’がついてしまいます。 これが改行を意味するということは分かったのですが、これを取り除くためにはどうしたらよいでしょうか?? どなた様かご教授ください。 よろしくお願いいたします。

  • シェルで文字列を含んだ行だけを削除したい!

    文字列を含んだ行だけを削除したいと思って、 sed -e "/XXXXXXXX/d" destfile > destfile または grep -v XXXXXXXX destfile > destfile とやったら、全部消えてしまいました!(^^;) どうしてですか? そして、どうしたら正しい処理になりますか? すみません。シェル初心者です。 易しく、わかりやすく、教えて下さい!

  • 100文字が並ぶテキストを10行10列にする方法(Bシェルにて)

    100文字が並ぶテキストをBシェルにて10行10列にする方法を教えてください。 テキスト(test.txt)には、次のようにスペースで区切られて100文字入っています。(この例の様に規則性はありません) 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 ..(省略) ↓これを 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 (省略) の様にするやり方を教えてください。 Bシェル初心者です。宜しくお願い致します。

  • エクセルマクロでA欄に値がある行までのC列の範囲を指定したい。?

    エクセルマクロでA欄に値がある行までのC列の範囲を指定したい。? ●エクセルマクロのVBAで次のように記述しています。 Range("C2").FormulaR1C1 = "=VLOOKUP(LEFT(RC[-2],4),C[-2]:C[-1],2,FALSE)" Range("C2").Select Selection.AutoFill Destination:=Range("C2:C148"), Type:=xlFillDefault A列に文字が入っている最終行は A148なので、C2: C148 の範囲にオートフィルで貼り付けるように しています。 しかし、A列に文字が入っている最終行は、変動します。 なお、貼り付ける範囲はいつでも C2から始まります。 A列に文字が入っている最終行が A200であれば、C2: C200の範囲、 A列に文字が入っている最終行が A321であれば、C2: C321の範囲といったように、 C2の値を貼り付ける範囲を設定したいと思っています。 ●そこで、次のように記入してみました。 With Worksheets(2) Dim lRow As Long, lRow = .Cells(Rows.Count, 1).End(xlUp).Row Range("C1").Formula = "名称" Range("C2").FormulaR1C1 = "=VLOOKUP(LEFT(RC[-2],4),C[-2]:C[-1],2,FALSE)" Range("C2").Select Selection.AutoFill Destination:=Range(Cells(3, 2), Cells(lRow, 3)), Type:=xlFillDefault 変数を使って最終行を指定しても上手くいきませんでした。 (C2:C150)や(C2:C160)といったように「C2」のセルを「C2のセル」から「A列に文字が 入っている行のC列」まで貼り付けたいと思っています。 どのようにVBAを記述したら良いのか教えていただけないでしょうか。

  • 指定文字の同じ行2列、3列目の文字入力の個数

    B列3~12行に文字が入力されており指定文字Bの行の2列目に文字が入力されていればその個数をC14にまた3列目に文字入力個数5個をD14に入力したいのですがどなたか関数が解る方宜しくお願いします。Excel2013です。

  • Excelで特定の文字列を含む行を削除する

    ある列に入力されている文字の中で、指定の文字列が含まれる行全体を削除して、上方向に詰めたいです。 具体的には、文字列の先頭にスペースがなく、"URL" 、"EMAIL" のどちらかが含まれる場合です。

  • 指定した文字列を含む行から、指定した文字列を

    含む行まで、全ての行を抽出して別ファイル(名前は元ファイルと同じ)としたいのです。 対象ファイルに結果を上書きでもかまいません。 指定したフォルダの中にある複数のフォルダ各々に1つずつ入っているテキストファイルが対象になります。 例) 東京都 新宿区 <start123AAA> 東京都 港区 <end>AAABBB 東京都 目黒区 どのファイルにも必ず<start と<end の文字列があります。(必ず1組です) <start の文字列を含む行から <end の文字列を含む行までを 抽出したいのです。 (欲しい結果↓) <start123AAA> 東京都 港区 <end>AAABBB フリーのエディタソフトのgrep、grepのマクロ、バッチでできないものかと試してみているのですが どうしてもうまくいきません。 抽出したい範囲、削除する範囲には禁則文字?が入っているのでバッチは難しいのでしょうか? できればバッチで処理できればなと思っているのですが、うまくいきません。 (<>!""/ あたりが入っています。別の文字に置き換えることは可能です) 範囲を抽出ではなく、 <startを含む行の一つ上の行から前を全て削除 <endを含む行の一つしたの行から後を全て削除 する方法や VBAで、スタート行をとエンド行をSearchして抽出する方法など ご教授いただきたくお願い致します。

  • シェルで文字列を置換したい。

    UNIXのシェルであるファイルに書かれている文字から ある文字列を置換してそのファイルの中身を書き換えたいのですが どう書いていいのかわかりません。 ファイルを読み込んで該当の文字列を含んだ行を 見つけるところまではいったのですが・・・。 どなたか教えてください! よろしくお願いします。

専門家に質問してみよう