68user's page 掲示板

Prev< No. 3668〜3686> Next  [最新発言に戻る] [過去ログ一覧]
No. 3668 # samy 2004/03/30 (火) 18:29:45
ありがとうございます。
助かりました。
また、質問があれば投稿しますのでその時はよろしくお願いします。

No. 3669 # Goldwasser [URL] 2004/03/30 (火) 18:58:06
だから私を見て!
http://sgldwssr.hp.infoseek.co.jp/otp.html

No. 3670 # tmr [E-mail] 2004/04/06 (火) 21:38:22
awkについての質問です。

Solaris7上で、nawkを実行する際、

"cat text.txt" | getline var

という構文があるとvarに "cat text.txt" の結果が入るのですが、
同じことを /usr/xpg4/bin/awk で実行すると var に値が
入らないようです。
このあたりの事情をご存知の方、教えてくれませんか?

No. 3671 # tmr 2004/04/07 (水) 15:27:13
下記の件ですが、awkをかける対象のテキストの行数が、
getlineで取り込まれるテキストの行数より少ない場合に
発生することがわかりました。
つまり、getlineで取り込まれるテキストの方が短い場合、
nawkでは最後の行の内容が保持されて、それを利用した置換処理が
行われるが、 /usr/xpg4/bin/awk では行われないということです。

No. 3672 # 68user 2004/04/08 (木) 10:46:06
>>3671 tmr
なるほど。そういう違いがあることは知りませんでした。一般論としては、
getline の戻り値チェックをしっかり行ないましょう、てな感じでしょうか。

No. 3673 # Goldwasser 2004/04/08 (木) 15:38:24
誰かハイホーネットにメールを送信するアプリをくれましたか?(w

No. 3674 # vm 2004/04/12 (月) 22:17:45
はじめましてvmと申します。
UNIXのコマンド処理で質問があるのですが、
何行かあるテキストファイルの指定のカラム位置に文字列を行単位に挿入
するという処理を、UNIXのコマンドだけでやりたいと思っています。

自分で処理を考えてみたのですが、
1. cutコマンドを使用して、指定カラム位置を境にして、
「指定カラム位置より前の文字列が入ったファイル」と
「指定カラム位置より後の文字列が入ったファイル」に分割する。
2. paste コマンドを使用して、セパレータを元のファイルが使用していない文字を指定して、
1で作ったファイルを結合する。
3. sedコマンドでセパレータ文字を挿入したい文字列に置き換える。


ワークファイルができてしまって、UNIXっぽくないので、
これ以外にもっと簡単なやり方がないか探しているのですが、
もしご存知の方いらっしゃいましたら、ご教授いただけないでしょうか。
よろしくお願いします。

No. 3675 # 68user 2004/04/13 (火) 10:35:37
>>3674 vm
やりたいことがよくわからないので、入力と出力のサンプルを
提示してください。

No. 3676 # zsh 2004/04/13 (火) 13:14:57
>>3675 68user
多分このような事を考えているのだと思います。

■入力ファイル
aaaa,bbbb
cc,ddd
eeeeee,ffff

■挿入文字列
00

■出力ファイル
aaaa00bbbb
cc00ddd
eeeeee00ffff

>>3674 vm
で、やりたい事が上記の通りだとすると、
perlとかawkで出来ると思います。

No. 3677 # vm 2004/04/13 (火) 17:42:20
こんにちはvmです。
説明不足でした。

入力データは1ファイルで、

AAAABBBCCCCC
DDDDEEEFFFFF
GGGGHHHIIIII
  :

という感じで項目間の区切り無しのレコードが
いくつか入っているという状態で、

AAAABBB****CCCCC
DDDDEEE****FFFFF
GGGGHHH****IIIII
  :

1行目で見ると、BBBとCCCCCの間に****を挿入するということを、
シェルかUNIX標準コマンドでやりたいと考えています。

先に書いた私の手順ですと、一度cutコマンドで

AAAABBB
DDDDEEE
GGGGHHH
  :

CCCCC
FFFFF
IIIII
  :

2つのワークファイルを作るので手順も多くて面倒なため、
他にやり方がないものかと考えている次第です。
もっと単純化できる方法がありましたら、ご教授ください。
お願いいたします。

No. 3678 # zsh 2004/04/13 (火) 19:10:14
>>3677 vm
区切り文字なしだとすると、文字列の挿入個所は何を基準に判断するのでしょうか?
下の例を見る限りでは、行頭からのバイト数で分割してるように見えますが、あってますか?

後気になった点はUNIXの標準コマンドというのは
どこまでを指すのでしょう?
インストール時点でインストールされるコマンドは、
OS・インストールオプションによって異なると思いますが・・・

No. 3679 # vm 2004/04/14 (水) 21:04:08
こんにちはvmです。

>下の例を見る限りでは、行頭からのバイト数で分割してるように見えますが、あってますか?

すみません。そのとおりです。

>後気になった点はUNIXの標準コマンドというのは
>どこまでを指すのでしょう?

POSIXに準拠しているコマンドのことを指していました。

あれからちょっと調べてみたのですが、

awk '{printf("%s%s%s\n", substr($0,1,2), "TUIKA", substr($0,3));}' target.txt > result.txt

awkコマンドであれば、私のやりたいことがワークファイルを作らずに
実現できそうなことがわかりました。

どうもお騒がせしました。
これより良い方法がございましたら、ご教授ください。

No. 3680 # tgr [URL] [E-mail] 2004/04/15 (木) 09:25:34
gfg

No. 3681 # 馬場 2004/04/15 (木) 10:54:14
宜しくお願いします。

tarコマンドを実行した際に以下のメッセーシ゛が出たんですが、
何を意味しているかわかりません。
ご教授ください。

--------------------------------------------------
cd /
tar -cvf /dev/rmt0n ./usr/*
tar -rvf /dev/rmt0n ./var/* ← メッセーシ゛が出ます
--------------------------------------------------
表示メッセージ
tar:blocksize=0
tar:backspace over record failed
--------------------------------------------------
ご教授ください。宜しくお願いします。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 3682 # ryo 2004/04/15 (木) 21:47:40
mailxコマンドに関してですが
件名がベース64で本文がJISコードのメールを読む時、
以下の状態になってしまいます。
直す方法を知っている方おりましたらお教えください

1.件名が日本語の長文だと、以降の画面が文字化けします
2.JISコードの本文を開くと
    「---Executing: kterm sh: kterm: 見つかりません」
    とでてしまい表示できません

No. 3683 # 68user 2004/04/16 (金) 04:28:19
>>3679 vm
> これより良い方法がございましたら、ご教授ください。
awk より良い方法かどうかはわかりませんが、
    sed 's/^\(..\)/\1TUIKA/' < target.txt > result.txt
というのもあります。

>>3681 馬場
すでにアーカイブ済のファイルが出現したため、前に戻って
置き換えようとしたが、テープドライブのため前に戻る機能が
なかった、ということではないですかね。

>>3682 ryo
Solaris2.6 ではその症状は出ませんでした。

No. 3684 # Phantom 2004/04/16 (金) 10:02:39
こんにちは。Phantomと申します。

ネットで色々調べた結果ちょっと、見当たらなかったので質問させてください。
アクセスログの話なのですが、Web/FTPサーバのアクセスログでは有りません
(Web/FTPのアクセスログの情報は腐るほど有りました。また、情報が全く無か
ったと言うのは嘘で、高いソフトウェアやASPぐらいの情報しか出てこず、個人
の私としては手が出ません。)。

ローカルのLinux環境内でアクセスされたファイルのログを取りたいと考えて
いるからです(Unix系OSで実現するのが難しいから情報が少ないのでしょうか?)。
当然、アクセスログなのでアクセスしたユーザ名、時間、アクセス先などの情報を
見たいと思っています。
セキュリティの事もあるのですが、私自身が何時ファイル(特に設定ファイル)の
編集を行ったかという履歴を見たいからです。

それで、これに見合った(フリー)ソフトウェアやシェルスクリプト等が存在しまし
たら、紹介していただければ幸いです。(それとも、もしかしてすごく簡単にPerl
とかで組めちゃったりするんでしょうか?)

No. 3685 # 68user 2004/04/16 (金) 11:24:16
>>3684 Phantom
履歴や変更点の確認をしたいということなら、cvs や subversion
などのバージョン管理ツールを使うのがよいでしょう。

履歴を何段階でもとることができ、細かい修正点を記録できるという
利点がありますが、その一方でファイル更新とバージョン管理とが
密に連携しているわけでないので、バージョン管理ツールへの登録
忘れが発生する可能性がある、という欠点があります。

あるいは
> ユーザ名、時間、アクセス先
だけの情報だけでよいなら、
      - ユーザ名、時間、ファイル名を記録する
      - エディタを起動する
      - (必要なら) 編集前と編集後のファイルをどこかに保存する
というファイル編集用スクリプトを作成し、それを使うように
すればよいでしょう。もちろん、このスクリプトを使わずに直接
ファイルを修正してしまうとアウトです。

もっと厳密にやりたいならシステムコールをフックするタイプ
のものが必要です。たとえば Linux Security Module (LSM) や
      Sysrace: http://www.citi.umich.edu/u/provos/systrace/linux.html
など。

しかしこれらの主目的はシステムコールを許可するかしないかを
決めるためのものなので、ログを記録できるような仕組みがある
のかどうかはわかりません。

> Unix系OSで実現するのが難しいから情報が少ないのでしょうか?
Windows なんかだと API のフックが簡単にできますが、UNIX は
そこらへんの機能が弱いのです。

No. 3686 # Phantom 2004/04/16 (金) 12:12:08
>>3685 68user
凄く素早いレス有難う御座いました。
沢山の情報を与えてくださって感謝しております。

> cvs や subversion
成る程。バージョン管理ツールという手が有りましたか。

> ファイル編集用スクリプトを作成
作ってみたいと思います。ただ、仰る通り私、忘れっぽいので直接ファイル
編集しちゃって失敗しそうです。

> LSM や Sysrace
私には難しいみたいですが、一つの手として調べてみます。

Prev< No. 3668〜3686> Next  [最新発言に戻る] [過去ログ一覧]