あるファイル中からshell scriptで要素名(またはタグ)を抽出する方法とはどんなのがあるでしょうか?
教えてください。

A 回答 (2件)

sgrepを使用するといいんじゃないでしょうか。

    • good
    • 0

awk とか sed のストリーム処理系のコマンドを利用するのをお勧めします。



場合によっては、スクリプトを組まなくても、1行で済むこともあります。

具体的には、そのファイルの例とやりたいことを具体的に補足したほうがいいです。

#その昔、awk やsed 使いは、ちょっと尊敬されてました。(ホンのちょっとだけね)

この回答への補足

回答ありがとうございます。
そうですね、補足します。
例えば、
<DOCTYPEHTMLPUBLIC "//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-2022-JP">

このようなHTMLファイルを作った時に、このファイルで指定している要素名を抽出するようなshell scriptを
作ってみるとかしたいんですが。。。いかがでしょう?

補足日時:2002/01/29 18:27
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QPerl:あるファイル名が指定のリスト(テキストファイル)になければ、そのファイルを消去するというのを作りたいのですが。

RHL9.0を使ってます。/var/spool/mail/以下に次のようなファイルがあったとします。
taro hanako daisuke yukie

また、/home/admin/user-name.txtというファイルには次のように書かれています。
taro
hanako


このとき、perlを用いて/var/spool/mailディレクトリからuser-name.txtに名前のない人のファイルを消去するというスクリプトを作りたいのですが。おそらくif
文を使うと思うのですがどうすればよいでしょう。$userという変数にuser-name.txtの一つ一つを代入してWhile文でまわすことはできてます。後は「$userという名前のファイルが/var/spool/mail以下になかったらsystem("rm /var/spool/mail/$user");を実行する。」とするだけです。

ちなみに、userdelを-rコマンドをつけずに消去された人たちのものが実際存在する人たちのものと混在しているため消したいと言うのが動機です。

RHL9.0を使ってます。/var/spool/mail/以下に次のようなファイルがあったとします。
taro hanako daisuke yukie

また、/home/admin/user-name.txtというファイルには次のように書かれています。
taro
hanako


このとき、perlを用いて/var/spool/mailディレクトリからuser-name.txtに名前のない人のファイルを消去するというスクリプトを作りたいのですが。おそらくif
文を使うと思うのですがどうすればよいでしょう。$userという変数にuser-name.txtの一つ一つを代入してWhile文でまわすことはできて...続きを読む

Aベストアンサー

私が同じことをするなら,こんな感じでしょうか.

お題目:存在しないユーザーのmailスプールを削除したい.

#!/bin/bash

for file in /var/spool/mail/*; do
user=`basename $file`
if ! grep $user /etc/passwd ; then
rm -f $file
fi
done

Qshell の time コマンドの結果をファイルに出力する方法(AIX)

AIX4.3 の環境でプログラムのパフォーマンスを確認しようと思っています。「time XXXXX 2> perform.log」で標準エラー出力をファイルに書き出そうとしているのですがうまくいきません。time コマンドのパフォーマンス結果は標準エラー出力に書き出されると思うのですが、リダイレクトしたファイルは何も書かれていません。画面にtime コマンドの結果が表示されるだけです。time コマンドではなく通常のエラーは標準エラー出力からファイルに書き出すことはできます。原因がわからずこまっています。よろしくお願いします。

Aベストアンサー

 お使いのシェルの仕様にもよると思いますが、

(time XXXX) 2> perform.log

でどうでしょうか?
 手元の cygwin の bash ではうまく行きました。
 time の出力は、コマンドではなくシェル自身の出力なので、() で括ってやらないとリダイレクトできないものと思われます。

QLinuxのファイルサーバーに移らないファイルがある?

できるLINUXという本を読み、イントラネットサーバを立てました。
特に問題ないと思うのですが、ファイルサーバーとして利用してみようと思い、windowsのパソコンからLINUXのpublicとしたフォルダへ、ファイルを移しています。 
ところが、うまく移す事ができないファイルがあるのです。
何故なのでしょうか。
移るものは、すんなりと行くのですが、できないファイルはいつも特定のものです。
エラーメッセージとして、
[LINUXのpublicの移動先のフォルダ名]は存在しません。作成しますか。→(一応、はいで抜ける)
もう一度、上と同じメッセージが出る。→(また、はいで抜ける)
[移したいファイル名]を作成または置換できません。既に存在するファイルを作成する事はできません。”
と、出ます。
よろしくお願いします!
追伸、移らないファイルを英文字に変えたら、うまくいきました。
しかし、漢字交じりのファイル名でもすんなり移るものもあります。
基本的にファイル名に漢字は用いない方がいい、という事なのでしょうか?
また、漢字のファイル名が使用できるような良い方法は何かあるのでしょうか。

できるLINUXという本を読み、イントラネットサーバを立てました。
特に問題ないと思うのですが、ファイルサーバーとして利用してみようと思い、windowsのパソコンからLINUXのpublicとしたフォルダへ、ファイルを移しています。 
ところが、うまく移す事ができないファイルがあるのです。
何故なのでしょうか。
移るものは、すんなりと行くのですが、できないファイルはいつも特定のものです。
エラーメッセージとして、
[LINUXのpublicの移動先のフォルダ名]は存在しません。作成しますか。→(一応、はいで...続きを読む

Aベストアンサー

linuxをファイルサーバにするために使用したソフトは何でしょうか?(samba?ftpd?その他?)
一応sambaであるとして説明します。設定ファイル(バージョンによってちがいますがsmb.confというファイルが/etc/samba/、/usr/local/etc/あたりにあると思います。 )の
globalセクション([global]という行の次の行で良いです。)に
client code page = 932
coding system = CAP
という行をvi等のテキストエディタで追加します。これでwindowsの漢字ファイル名を、漢字を使わないように1バイト文字に変換して格納します。
「CAP」という部分は「EUC」や「SJIS」とすることができますが、OS(linux)が対応していなければいけません。(linuxが対応しているかどうかは私は知りません。)
設定ファイルを変更したら、sambaの再起動をして変更を反映させてください。

Q複数のエクセルファイルからのデータの抽出、一覧の作成について

エクセルでのデータ整理の件で以下の質問があります。
以下のことができるようなマクロは組めませんでしょうか?

同一フォルダ(仮に、「C:\Sample」とします)に日々の業務データが
入力されたエクセルファイルが300個ほどあります。
各ファイル内にはSheetが5枚あり、各ファイルで入力されているデータは
すべて同一のフォーマットです(Sheet毎では異なる。
例えば、Sheet1の1行A列には日付データ、Sheet2の2-5行B列には名前データ、といった感じです)。

これら300個のファイルから、これまでのデータを一覧にしたリストを
新規に作りたいと考えています(作成場所はどこでも構いません)。
例えばSheet1の、1列目にはファイル名、2列目には各ファイルSheet1の1行A列の日付データ、
3-6列目には各ファイルSheet2の2-5行B列の名前データ・・・、といった具合です。
(縦に日付が並び、1行内に各ファイルのデータが入力されている、
といった風にしたいと考えています。)

参考になりそうな過去の回答もありましたので、いくつか試してみたものの、
うまくいきませんでした(私はマクロは少しかじった程度です)。
一個ずつコピペでは非常に骨が折れ、難儀しております。

ややこしい質問ではございますが、ご回答お待ちしております。

エクセルでのデータ整理の件で以下の質問があります。
以下のことができるようなマクロは組めませんでしょうか?

同一フォルダ(仮に、「C:\Sample」とします)に日々の業務データが
入力されたエクセルファイルが300個ほどあります。
各ファイル内にはSheetが5枚あり、各ファイルで入力されているデータは
すべて同一のフォーマットです(Sheet毎では異なる。
例えば、Sheet1の1行A列には日付データ、Sheet2の2-5行B列には名前データ、といった感じです)。

これら300個のファイルから、これまでのデ...続きを読む

Aベストアンサー

そのやり方だと、INDIRECT関数を使わなければいけません。
=INDIRECT("["&A1&"]Sheet1!A1")

マクロでは次のようになります。ファイル数のところは正しい数に変えてください。

Option Explicit

Private Sub GetData()

Dim wbk As Workbook
Dim wst1 As Worksheet
Dim wst2 As Worksheet
Dim fnm As String
Dim i As Integer

For i = 1 To 300 'ファイル数

fnm = Sheet1.Cells(i, 1)
Set wbk = Workbooks.Open(fnm, ReadOnly:=True)
Set wst1 = wbk.Worksheets("Sheet1")
Set wst2 = wbk.Worksheets("Sheet2")

ThisWorkbook.Activate
Sheet1.Activate

Cells(i, 2) = wst1.Cells(i, 1)
Cells(i, 3) = wst2.Cells(2, 2)
Cells(i, 4) = wst2.Cells(3, 2)
Cells(i, 5) = wst2.Cells(4, 2)
Cells(i, 6) = wst2.Cells(5, 2)

wbk.Close

Next i

End Sub

そのやり方だと、INDIRECT関数を使わなければいけません。
=INDIRECT("["&A1&"]Sheet1!A1")

マクロでは次のようになります。ファイル数のところは正しい数に変えてください。

Option Explicit

Private Sub GetData()

Dim wbk As Workbook
Dim wst1 As Worksheet
Dim wst2 As Worksheet
Dim fnm As String
Dim i As Integer

For i = 1 To 300 'ファイル数

fnm = Sheet1.Cells(i, 1)
Set wbk = Workbooks.Open(fnm, ReadOnly:=True)
...続きを読む

Q「ファイルまたはフォルダの削除エラー」、メッセージが消せません。

Windows Media Player上でライブラリのファイルを削除しようとしたら、「ファイルを削除できません。送り側のファイルまたはディスクから読み取りません。」とのメッセージが出て、OKまたは閉じるボタンを押してもこのメッセージが消えません。

このメッセジーを消すにはどうしたらいいのでしょうか?娘が使っているitunesと関係があるのでしょうか?取りあえず、Medis Playerを閉じるにはどうしたらいいでしょうか?

Aベストアンサー

参考になれば
http://121ware.com/navigate/support/advice/20090520/


このカテゴリの人気Q&Aランキング

おすすめ情報