ザウルスのLinuxでSEDのスクリプトファイルを使いたい

このQ&Aのポイント
  • ザウルスのLinuxでSEDのスクリプトファイルが使えず困っています。ターミナル上で実行するとエラーが発生します。
  • 問題が解決するためにはスクリプトファイルの記述方法を見直す必要があります。
  • 詳細なエラーメッセージを確認して、スクリプトファイルの書式に間違いがないかを確認してください。
回答を見る
  • ベストアンサー

ザウルスのLinuxでSEDのスクリプトファイルを使いたい

ザウルス(SLC1000)のターミナル(qpe-embeddedkonsole-ja Ver 1.6.0)で、 SED(sed-ja/GNU sed Ver. 3.02)のスクリプトファイルが使えず困っています。 ----- in.txt ----- 12345 abcde ------------------ +++++ s.sed +++++ 1q +++++++++++++++++ 上記ファイル内容で、ターミナル上で bash-2.05$ sed -e "1q" in.txt は問題なく出力されますが、 bash-2.05$ sed -f s.sed in.txt では、 sed: file s.sed line 1: Extra characters after command と出ます。スクリプトファイルでも["]記号が必要かも知れないと思い s.sed を下記のように変えると +++++ s.sed +++++ "1q" +++++++++++++++++ sed: file s.sed line 1: Unknown command: ”" ” と出ます。 初歩的な何か抜けているのだと思いますが抜け出せずに居ます。 宜しくお願いいたします。 以上

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

  • ベストアンサー
  • ann_dv
  • ベストアンサー率43% (528/1223)
回答No.1

ザウルスを使った事は無いのですが、一般的なUNIXのsedコマンドにおいて、s.sedファイルの内容が本当に"1q"だけのキャラクターで完結していればそのようなエラーは出ないはずです。 sed: file s.sed line 1: Extra characters after command 「s.sedの1行目:コマンドの後ろに余計な文字があります」 とエラーを吐き出している以上、"1q"の後に見えないキャラクターが追加されていると考えられます。 例えば、sed -eコマンドでも"1q"の後に全角スペースを追加すると同様のエラーが出ます。

nakamitsu
質問者

お礼

ann_dvさん、早速の回答ありがとうございました。 >s.sedファイルの内容が本当に"1q"だけのキャラクターで完結していればそのようなエラーは出ないはずです。 これがヒントになりました。文字コードや改行コードの問題か?。 スクリプトファイル作成には、ザウルス上の「Tree!Text QT」というエディターで作りましたが、同じくザウルス上の「ZEditor」という別のエディターでファイルを作ったところ、エラー無く動作しました。 ちなみに、ザウルス標準の「メモ」エディターで作ってもエラーになったので、ザウルス固有の問題だと思います。 詳細はともかく、スクリプトファイルが使えるようになりましたので解決です。ありがとうございました。

関連するQ&A

  • SED スクリプトファイルを複数のファイルに作用させたい。

    SEDのスクリプトファイル(henkan.sed)を作りました。 このスクリプトを実行させたい対象ファイルが15個あります。(temp01.txt~temp15.txt) > sed -f henkan.sed temp01.txt > kekka01.txt > sed -f henkan.sed temp02.txt > kekka02.txt           ・           ・           ・ > sed -f henkan.sed temp15.txt > kekka15.txt これはあまりにもしんどいです。何かよい方法はあるでしょうか。 また、コマンドラインから一つのスクリプトファイルを複数の対象ファイルに作用させることは可能でしょうか。 よろしくお願いします。

  • Unicode 対応の sed って無いのですか?

    Windows でUTF8 日本語を処理できる sed は未だ存在しないのでしょうか? SJIS の日本語文章は正しく動作しますが、unicode のファイルの日本語処理は動作しません。 utf8 の入力ファイル、スクリプトファイル(.sed)を使用すると正しく動きません。 処理可能な sed はありますか? 例えば:  in.txt の内容 = 日本語, script.sed 内容= s/日本語/jjjj/ の uft8 ファイル、とし、 sed -f script.sed in.txt > ot.txt を実行 →エラー発生。 no such command as ・ソs/譌・譛ャ隱・jjjj/ と文字化け?。・ソ、ってゴミ?。 (日本語なしの script でも同一) script.sed をSJIS とすると、エラーは出ないが、ot.txt は空。 (色々の sed で確認しましたが、onigsed での --ctype=utf8 指定も駄目でした。)

  • sed -f のエラー対策を、教えて下さい。

    sed -f work.sed hoge.txt を実行すると、"sed: 1: work.sed: bad flag in substitute command: 's'"となる。 work.sed(文字コード: utf8)の内容は、以下の通りです。 s/キーワード/文字/g 動作確認環境 ・Mac 10.5のターミナル ・サクラサーバーを、ターミナル上でリモート操作しました。 二つの環境で同じ動作でした。 これに対する対応策を、ご教示ください。

  • 複数のファイルをsedで処理したいけど・・・

    こんにちは。sedでテキストファイルの文字の変換をしています。でも、 001.txt 002.txt 003.txt のように同じ変換をしたいファイルが延々とあります(涙) sed -e 's/a/b/g' 001.txt > 001convert.txt のように一つずつやっているととても大変です。 なのでワイルドカードが使えるかなと sed -e 's/a/b/g' *.txt > *convert.txt とやったら「*convert.txt」というのが一つだけできてしまいました。 変です・・・。 正しくはどのようにコマンドを書けばいいのですか? 教えてください!!

  • sedスクリプト 置換

    この度、はじめてsedスクリプトをかいてみようと思っています。 以下の機能を持った置換スクリプトを書きたいのですが、 アドバイスなど頂ければ幸いです。 ・abcディレクトリ内を検索して(サブディレクトリも含む)、test.txtというファイルを探し出す(test.txtは複数あります) ・検索された複数のtext.txtを一括で置換する ↓置換内容 ・test.txtの5行目にある文字列を1からはじまる連番に置換する(test.txtは複数あるので、処理した順に連番をつけていく) イメージが伝わりにくい場合は、どうかご指摘ください。 よろしくお願いします

  • sedでの変更をファイルに反映させる

    aaa.txtというファイルの中身が Welcome China だったとして、これをWelcome Indiaに変更したファイルを生成したい場合、 sed s/China/India aaa.txt > bbb.txt でよいかと思うのですが、aaa.txtの中身を直接変更したい場合、 sed s/China/India aaa.txt > aaa.txt としてしまうと、aaa.txtの中身が空っぽになってしまいます。エディタで開いて、置き換えをすればよいのですが、エディタを使わないで、ファイルの中にある単語の置き換えをし、ファイルに直接反映させる方法はないでしょうか。  できればsedを使った方法で、知りたかったのですが・・。

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

    bangou.txtには ▲ 123123 123123 100000 ▲ ▲ というように数値が入っています。(▲は空白ですが改行コードがはいってます) この場合、1行目と3行目を比較するスクリプトを作りたいと思って 色々調べて以下のようなスクリプトを作ってみましたけどうまく動きません。 #!/bin/bash for iii in `sed -n '1p' bangou.txt` do jjj=`sed -n '2p' bangou.txt` kkk=`sed -n '3p' bangou.txt` #declare -i $kkk if [ "$kkk" = "$iii" ] then echo "$iii" else echo "$kkk" fi done どこか基本的なところで間違えているのかと思うのですが初心者なので よくわかりません。 わかる方がいらっしゃったら教えていただけないでしょうか。

  • sedコマンドに関して

    サーバーにあるファイルの中身を置換する為 Tera Termのsedコマンドを使おうとしたのですが 文字列の「'」が置換できません。 以下のように入力してみましたがだめでした。 sed -e 's/'/'aa/g' text1.txt > text2.txt sed -e 's/\'/\'aa/g' text1.txt > text2.txt 出来ないんでしょうか!? 宜しくお願いいたします。

  • sedコマンドの置換パターン条件について

    シェルスクリプトについて質問です。 /etc/ssh/sshd_configのAllowUsers行にユーザを追加&削除、sshdをリスタートするスクリプトを作っています。 ユーザ追加の処理はsedコマンドで実現できました。 sed -i -e "s/^AllowUsers/AllowUsers $USERNAME/" $CONF_FILE そして、悩んでいるのがユーザ削除時の処理です。 "AllowUsersで始まる行の中で" 且つ "変数$USERNAME" に一致する部分を削除するという処理です。sedは複数条件を指定することもできますが、以下記述の場合、2つの条件が独立して処理されてしまいます。 sed -e "s/^AllowUsers/AllowUsers/" -e "s/ $USERNAME//" $CONF_FILE ($USERNAMEに一致する部分はAllowUsersで始まらない行でも置換される) sedにAND条件のような使い方は可能でしょうか。 環境はCentOS 5.3、シェルはbashを使っています。 よろしくお願いいたします。

  • sedの置換文字に変数を使用したいのですが・・・

    あるファイルの特定の文字を変換し、上書きをする処理を行いたいのですが、sedの置換文字に変数が渡せなくて困っています。 例: X="a" Y="b" echo test.txt | sed 's/${X}/${Y/g}' >test.txt sedでは置換文字に${X}といった変数を使用することはできないのでしょうか?

専門家に質問してみよう