68user's page 掲示板

Prev< No. 4993〜5019> Next  [最新発言に戻る] [過去ログ一覧]
No. 4993 # べた 2009/04/22 (水) 12:12:04
>>4992 zsh

> 普通に考えると、それ専用のコマンドがあるんだからそれを使うべき。
すみません。

> - パス名
> echo ${FILE} | sed 's/\(.*\/\)[\/]*/\1/g'
が、上手くいきませんでした。
パス名がとれません。フルパスが返ってきます。

/aaa/bbb/txt.csv → /aaa/bbb/txt.csv
/txt.csv → /txt.csv

No. 4994 # べた 2009/04/22 (水) 12:15:00
>>4992 zsh

> 普通に考えると、それ専用のコマンドがあるんだからそれを使うべき。
すみません。

> - パス名
> echo ${FILE} | sed 's/\(.*\/\)[\/]*/\1/g'
が、上手くいきませんでした。
パス名がとれません。フルパスが返ってきます。
それと、ファイル名のみ場合は、値がなしとしたいのですが。

/aaa/bbb/txt.csv → /aaa/bbb/txt.csv
/txt.csv → /txt.csv

No. 4996 # zsh 2009/04/22 (水) 17:14:30
>>4994 べた
失礼しました。↓でどうでしょうか?

echo ${FILE} | sed -n -e 's#\(.*\)/[^/]*#\1#p'

No. 4997 # べた 2009/04/22 (水) 19:10:04
>>4996 zsh
ありがとうございます。
パス名を取り出すことができました。
ただ、以下の様に場合、上手くいきません。

「FILE=/txt.csv」の場合
    「/」となりません。
    ブランクというか、改行します。
    「/」だけ取り出すというのは無理なのでしょうか。

「FILE=txt.csv」の場合
    ブランクとなります。
    正しい動きなのでしょうか。

No. 4998 # ふくし 2009/04/22 (水) 22:39:27
nawkのユーザ定義関数について教えて下さい。

nawkで、ユーザ定義関数を呼び出して編集を行っているのですが、
ユーザ定義関数内で編集した値を、パラメータで渡した変数に設定
して返却したいのでが値が返却されません。
ユーザ定義関数内では、渡した変数に値が設定されているのですが、
関数を抜けると値が設定されていません。
どうしてなのでしょうか。
それとも、無理なのでしょうか。
パラメータで渡した変数に設定して返すことができるのでしょうか。

環境
    OS:Solairs8
    シェル:Bシェル(sh)

--------------------------------------------------------------
nawk -v OUT=${OutFile} -F"," '
        BEGIN {
                count = 0+0;
        }
        function chk2(arg1,arg2,val) {
                sub(/^"*/,"",arg1); sub(/"*$/,"",arg1);
                sub(/^"*/,"",arg2); sub(/"*$/,"",arg2);
                val=sprintf("%s %s",arg1,arg2);
        }
        function chk1(arg1,val) {
                sub(/^"*/,"",arg1); sub(/"*$/,"",arg1); val=arg1;
        }
        {
                chk1($1,UserID);
                chk2($8,$9,Name);

                printf("%s,%s\n",UserID,Name);
                #printf("%s,%s\n",UserID,Name) >> OUT;
                count++;
        }
        END {
                printf("Output number : %d\n",count);
}' ${FILE}

No. 4999 # zsh 2009/04/23 (木) 11:23:01
>>4997 べた
> 「FILE=/txt.csv」の場合
パス名末尾の / を出力しないようにしていたためですね。

echo ${FILE} | sed -n -e 's#\(.*/\)[^/]*#\1#p'

こうすれば出力されると思いますが、
逆に /hoge/fuga.txt のような場合でも /hoge/ となります。

> 「FILE=txt.csv」の場合
パスが指定されていないので、ブランクで正しいと思っていますが。
(そういった条件もありませんでしたし。)

>>4998 ふくし
nawk は参照渡しできないはずなので、そういう書き方ではできません。
ただ nawk では、ユーザ関数の引数として定義された変数を除き、
すべてグローバル変数だと思うので、やろうとしていることはできます。

No. 5000 # べた 2009/04/23 (木) 13:10:32
>>4997 べた

ありがとうございました。
出力されました。

No. 5001 # べた 2009/04/23 (木) 13:19:29
>>4999 zsh

お礼先誤りですみません。
ありがとうございます。


>> 「FILE=txt.csv」の場合
> パスが指定されていないので、ブランクで正しいと思っていますが。
> (そういった条件もありませんでしたし。)

No. 4994で、自分でファイル名のみの場合、値なしとしたいと
書いておきながら正しい動きなんですかと質問すみませんで
した。

No. 5002 # sfish 2009/04/23 (木) 14:46:19
>>4998 ふくし

えっ、Solairs8 の nawk って return を使えないんでしょうか?

No. 5003 # zsh 2009/04/23 (木) 15:58:34
>>5002 sfish
man には
return [expr]
と記載があったので、リターンコードを返すものだと思っていましたが、
確かに値を返すことも出来ました。こっちの方がいいですね。

No. 5004 # ふくし 2009/04/23 (木) 21:06:27
>>4999 zsh

> ただ nawk では、ユーザ関数の引数として定義された変数を除き、
> すべてグローバル変数だと思うので、やろうとしていることはできます。
どういうことでしょか。
nakwで関数を作るのが不慣れなもので、

nawk内で定義した変数はグローバル変数なので、nawk内であれば、
ユーザ定義関数でも参照や書き換えができるということでしょうか。
また、
ユーザ定義関数ないで定義した変数は、関数内でしか有効とならない
ということでしょうか。
例などを載せてくれるとありがたいのですが。

No. 5005 # zsh 2009/04/27 (月) 17:13:54
>>5004 ふくし
> nawk内で定義した変数はグローバル変数なので、nawk内であれば、
> ユーザ定義関数でも参照や書き換えができるということでしょうか。

その通りです。

ただ、
>>5002 sfish
で return で値が戻せることを教えて頂いたので
関数側は、
---------------------------------
function chk1(arg1) {
        sub(/^"*/,"",arg1); sub(/"*$/,"",arg1);
        return arg1;
}
---------------------------------
のようにして、呼び出し側は
---------------------------------
UserID = chk1($1);
---------------------------------
とすれば、やろうとしていることができると思います。

No. 5006 # まえ [E-mail] 2009/04/28 (火) 09:07:23
初歩的な質問ですが

内蔵HDDを増設し「label:Backup」として、クリックしますと「sdb」と表示されています。
プロパティで、場所は/mntとなっています。

このHDDに mv /home/ormaster/123.txt sdb/123.txt とファイルの移動をしたいのですが方法を教えてください。

No. 5007 # ふくし 2009/04/28 (火) 12:01:40
>>5005 zsh

ありがとうございます。

No. 5008 # 山田洋子 [E-mail] 2009/04/28 (火) 21:29:44
エラーメッセージ「cannot execute binary 」についての質問。

以前にservice sendmail start 2<&1 | /bin/mail -s "件名" wenbi@akw.com.cn
というコマンドを実行して、正常です。

しかし、下記のコマンドを実行して、「cannot execute binary 」というエラーメッセージを出ました。
この後、上記のコマンドを実行しても、エラーを出ます。
service sendmail start infile.txt
iconv -f EUC-JP -t Shift_JIS infile.txt < infile2.txt
cat infile2.txt | /bin/mail -s "件名" wenbi@akw.com.cn

No. 5009 # 68user 2009/05/07 (木) 13:40:49
>>5006 まえ
mount 済みであれば、mv /home/ormaster/123.txt /mnt/123.txt で
いけるのではないかと思います。

>>5008 山田洋子
よくわかりませんが、cannot execute binary のエラーメッセージを
出力しているのが service コマンドなのか、iconv コマンドなのか、
cat や mail なのかを調べてみてはどうでしょうか。

No. 5010 # ふくし 2009/05/23 (土) 00:01:56
nawkでsystem関数で、コマンドを実行しています。
今、system関数で実行したコマンドの結果を変数
に格納したいのですが、結果のステータスが格納
されて、コマンドの実行結果が格納できません。
どうしてなのでしょうか。そもそも不可能なのでしょうか。

system関数で、dateコマンドを実行し、結果を変数に
格納して、nawk内で使用したいのです。

nawk '{system("date +%Y%m%d")}'

環境は、
Solaris8
bsh
です。

No. 5011 # 68user 2009/05/23 (土) 01:06:30
>>5010 ふくし
system は単なるコマンドの実行であり、コマンドの標準出力を受け取るような
仕組みになっていません。この場合は getline を使うべきかと思います。

No. 5013 # ふくし 2009/05/23 (土) 10:59:31
>>5011 68user

ありがとうございます。
上手くいきました。

No. 5017 # keiji [E-mail] 2009/05/27 (水) 15:07:21
完全ガイドwindowsxp基本+Q&A 2008,3,20
p275,Q057 
1・アイコンの数を増やすは、あるが、減らす方法が、無い。

2・初心者に解かるように、教えて。やり方がわからへん。

No. 5018 # keiji 2009/05/27 (水) 15:14:43
特定のアイコンを消す方法です。

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