OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

ファイルの中身の操作について

  • すぐに回答を!
  • 質問No.157335
  • 閲覧数55
  • ありがとう数2
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 27% (24/87)

今あるファイルの中身の読み込みに、

set EDPTODAY = `awk -F , '/$EDPCLND/ {print $5,$9}'`
echo $EDPTODAY

と書くと、構文エラーが出てしまいます。
","区切りなので、"awk -F , "と表記したのですが・・・
($EDPCLNDで宣言しているファイルの存在は確認しました。)
お解りの方、どうお宜しくお願いいたします。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル11

ベストアンサー率 55% (155/280)

すみませんが、何をしたいのでしょう?

EDPCLNDというシェル変数にはファイル名が入っているのですか?
そのファイルは何行あるかわかりませんが、その第5, 第9フィールドを
全部とりだして、EDPTODAY にセットしたいのですか?

awk で /.../ というのは、そこに書かれたパターンにマッチした行について、
対応する { ... } の内容を実行しろということですので、
awk は標準入力に対して、$EDPCLND というパターンを探します。
でも、$ は行末にマッチする表現なので、
行末以降にある EDPCLND という文字列があるとは考えられないので、
たぶん、どの行にもマッチしないでしょう。

$EDPCLND が含むファイル名のファイルの中身を awk に読ませたいなら、
awk '/.../ {...}' $EDPCLND
となるのが普通です。
それ以外のことをしたいのなら、補足してください。
補足コメント
ami_mizuno

お礼率 27% (24/87)

補足します。
有るファイル(EDPTODAYとは別ファイル)を一行単位で読み込み
(此処の部分は別なので書いていません)、
読み込み内容をEDPTODAYに格納、そしてその切り出した内容の
その第5, 第9フィールドをとりだして中身を確認と言う処理を行いたくて、
こういう風に書いたのですが・・・

そうすると、上記のような処理を行いたい場合には
set EDPCLND = `more PDXFGKS.TXT`(PDXFGKS.TXTの中がまだ一行しかないのでこうしています)
set EDPTODAY = more $EDPCLND`awk -F , '{print $5,$9}'`
で宜しいのでしょうか?
投稿日時 - 2001-10-26 09:10:19
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル8

ベストアンサー率 67% (25/37)

awk で、-F を使うときは、スペース無しで セパレータを記述します。 awk -F , '/$EDPCLND/ {print $5,$9}' ではなくて、 awk -F, '/$EDPCLND/ {print $5,$9}' とやってみてはいかがでしょうか。
awk で、-F を使うときは、スペース無しで
セパレータを記述します。
awk -F , '/$EDPCLND/ {print $5,$9}'
ではなくて、
awk -F, '/$EDPCLND/ {print $5,$9}'
とやってみてはいかがでしょうか。


  • 回答No.3
レベル9

ベストアンサー率 54% (39/72)

set EDPTODAY=`cat $EDPCLND|awk '{FS=",";} /.*/{print $5,$9;}'` echo $EDPTODAY はどうでしょうか?
set EDPTODAY=`cat $EDPCLND|awk '{FS=",";} /.*/{print $5,$9;}'`
echo $EDPTODAY

はどうでしょうか?
  • 回答No.4
レベル11

ベストアンサー率 55% (155/280)

ファイルの中身、シェル変数に格納されている文字列、標準入出力で流れる データの区別が完全にはついていないとみうけられます。 $EDPCLND という変数には、ファイル名じゃなくて、PDXFGKS.TXT というファ イルの中身のある1行が入っているのですね?で、その行の、第5,第9フィール ドを、別の変数に格納するということでよろしいでしょうか? それなら、 set EDPTODAY ...続きを読む
ファイルの中身、シェル変数に格納されている文字列、標準入出力で流れる
データの区別が完全にはついていないとみうけられます。

$EDPCLND という変数には、ファイル名じゃなくて、PDXFGKS.TXT というファ
イルの中身のある1行が入っているのですね?で、その行の、第5,第9フィール
ドを、別の変数に格納するということでよろしいでしょうか?

それなら、
set EDPTODAY = `echo $EDPCLND | awk -F, '{print $5,$9}'`
でどうでしょう?
  • 回答No.5
レベル9

ベストアンサー率 54% (39/72)

あるファイルを一行単位で読み込んで処理するとのことなので testというスクリプトとします。usage: ./test ugo(処理するファイル名) awkのみで書くことも可能ですが、前後にshellの処理が入るとして、一応 参考までに書いてみました。雛型に利用できるかもしれません。 デバックしてないのでその点はご容赦ください。 これならいっそのこと全部awkの方が楽かも。 # ...続きを読む
あるファイルを一行単位で読み込んで処理するとのことなので


testというスクリプトとします。usage: ./test ugo(処理するファイル名)
awkのみで書くことも可能ですが、前後にshellの処理が入るとして、一応
参考までに書いてみました。雛型に利用できるかもしれません。
デバックしてないのでその点はご容赦ください。

これならいっそのこと全部awkの方が楽かも。

#!/bin/sh

cat $1 |awk '{FS=",";}
/.*/ {
print $5,$9;
do
printf("realy do job on this data?(y/n):");
getline reply <"-";
while(reply~/[yYnN]/);
if reply~/[yY]/ {
何かの処理;
}
}'
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ