![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
作成しているawkスクリプトを実行すると
”aaa" "1111" "kkk"
”bbb" "2222" "jjj"
という出力になってしまいます。
ダルルクォーテーションを削除したかったので
printf(”%s %s %s\n"、 adata、 bdata、 cdata)
↓
adataprint =gsub(”¥””、” ”、adata)
bdataprint =gsub(”¥””、” ”、bdata)
cdataprint =gsub(”¥””、” ”、cdata)
printf(”%s %s %s\n"、 adataprint、 bdataprint、 cdataprint)
としてみたのですが思ったような出力
aaa 1111 kkk
bbb 2222 jjj
にはなってくれません。
こういった処理はどのようにすればいいのか誰か教えていただけないでしょうか?
No.4ベストアンサー
- 回答日時:
机上デバッグ開始!
> 作成しているawkスクリプトを実行すると
> ”aaa" "1111" "kkk"
> ”bbb" "2222" "jjj"
> という出力になってしまいます。
入力ファイルは Excel データのエクスポートかな?
.csv か、タブ区切りテキストと、あたりをつけてみる。
※ 文字列を『"』で囲むのはよくあるからね。
[input.csv](想像)
…,"aaa",…,"1111",…,"kkk",…
…,"bbb",…,"2222",…,"jjj",…
> printf(”%s %s %s\n"、 adata、 bdata、 cdata)
この adata, bdata, cdata は、処理したい内容をわかりやすくするために
| {
| adata=$フィールド番号A
| bdata=$フィールド番号B
| cdata=$フィールド番号C
としたのかな?
あっ、
> adataprint =gsub(”¥””、” ”、adata)
> bdataprint =gsub(”¥””、” ”、bdata)
> cdataprint =gsub(”¥””、” ”、cdata)
これだ!
http://linuxjm.sourceforge.jp/html/GNU_gawk/man1 …
| gsub(r, s [, t])
| …… 置換の個数を返します。……
個数保存しちゃってる。。。
さっきの部分をしたのように換えればできるとおもうよ!
| gsub("\"", " ", adata)
| gsub("\"", " ", bdata)
| gsub("\"", " ", cdata)
| print adata" "bdata" "cdata
ご指摘の通りに変更することでうまくいきました!
”…… 置換の個数を返します。……”はまさかでした。
適切なアドバイスありがとうございました。
No.3
- 回答日時:
私も、printfで""が勝手に付くawkなど聞いたことがありません。
そんなawkがあったら、参考のために教えていただきたいです。
普通に考えて、まず間違いなく、その前の段階でadata,bdata,cdataに""が含まれています。
""でくくってあるCSVファイルをFS=,で取り込もうとした、とかではないか、と予想されます
> としてみたのですが思ったような出力
> にはなってくれません
質問するなら、「思ったような出力」にならなかったのなら「どんな出力になったか」を書くようにしましょう。
awkのマニュアルでgsub関数の説明は読んだのですか?
gsubは指定した変数の中身を書き換えて、その書き換え回数を返します
> printf(”%s %s %s\n"、 adataprint、 bdataprint、 cdataprint)
としたら
2 2 2
と表示されたのでは?
No.2
- 回答日時:
これもNo1=質問者
のパターンでしょうか? 質問者がちゃんと情報を記載しないため、何か変ですよね?
普通最初の疑問は
adataなどの変数とはなんぞや、最初からその変数に””が設定されているでしょう。
と考えるはずなんですが・・・・
だとしたら、ちゃんと変数にデーターが格納されるところを記載するでしょう普通。そこがこの質問の変な所ですよね???
http://homepage2.nifty.com/mozu/koza/awk_koza/aw …
にもありますが、printf に””が付加されることはありません、昔からあるawkなら。
そもそもプラットフォームも記載されていない、バージョンも記載されていない。それでやり方を提示しろ?
変な質問。
ちゃんと回答がほしいなら、プラットフォーム、バージョン等を記載すべき。
普通の解決手順は、まず変数に格納されている値になぜ””が付加されるのか、格納前、格納後を、処理のステップごとに確認し、その箇所をただすべき。
つまり、変数に格納したら
print adata;
でもいいし、
printf("%s\n",adata);
でもいい。
どこで””が紛れ込んだか調べるのが最初。自分ですでにわかっているなら、最初から、
””を外すには?
と言うテーマで書くべき。
記載内容だとprintfの操作で設定されてしまったような記載だ。
記載内容は全角文字と半角文字がごちゃまぜだが、実際のスクリプトもそうなんでしょうか?
スクリプトの全文を記載すべきなんじゃないんですか?
もしAWKに渡す前にすでについているならSEDを使って置き換えた後 | で渡せばいいだけの話。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_06.png?5a7ff87)
No.1
- 回答日時:
それって、printfのフォーマット指定子%sがダブルクォートを付けている犯人じゃないですか?だとしたら、単純にprintで表示させれば済みそうな気はします。
これでいけたら超簡単!(ただし処理系依存でうまくいかない可能性あり)print adata,bdata,cdata
どうしてもprintfによるフォーマット指定が必要なら、sprintfで結果を変数に出しておき、それに対してgsubで置換をかければいけると思います。
pdata=sprintf("%s %s %s",adata,bdata,cdata)
gsub(/"/,"",pdata)
print pdata
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) bashのgrepで複数の検索、かつスクリプト内で改行する方法を教えてください。 1 2022/10/06 20:09
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- その他(プログラミング・Web制作) awkの BEGIN{RS=""} で空行を削除できるが、削除できる仕組みが分からない。 1 2023/05/02 14:14
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- その他(プログラミング・Web制作) awkの文字列比較はPOSIXロケールまたはCロケールにおいてバイナリ値の比較に使えるか gawkな 1 2023/04/22 09:21
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
カンマ区切りのCSVファイルから"を削除したい
その他(プログラミング・Web制作)
-
ダブルクォーテーションの削除(置換)
Perl
-
SQLPLUSで結果を画面に表示しない
Oracle
-
-
4
bashでシングルクォート内の変数の組み込み方教えてください。
UNIX・Linux
-
5
データベース関係で、データの洗い替えとはどのような事を行うことでしょう
IT・エンジニアリング
-
6
awkでバイト数を方法
その他(プログラミング・Web制作)
-
7
CLOB型へのINSERT
Oracle
-
8
AWKにて時刻差分を取得したい
その他(プログラミング・Web制作)
-
9
Linux環境 grepで改行コード(CRLF、LF)を検索できないで
UNIX・Linux
-
10
CSVファイルの改行コード削除について
その他(プログラミング・Web制作)
-
11
awkで改行を除いて文字列を抜きだす
その他(プログラミング・Web制作)
-
12
awkで切り出した2つのデータを変数に代入
UNIX・Linux
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで素数だけを出力す...
-
htmlから、ファイル、もしくはC...
-
テキストファイルから日本語部...
-
コマンドプロンプトで行が見え...
-
MAC OSXのTerminalにperlの出力...
-
Perl<->Oracle間での文字化けに...
-
Active Perlでsleepを使う。
-
正規表現で"-" "0-9"以外を削除...
-
データの選択
-
awkスクリプトでダブルクォーテ...
-
文章を一文一文として処理する...
-
教えて!perlから.exeファイル...
-
Perlでファイルの末尾から指定...
-
エクセルVBA コードが同じでも...
-
VBAで巨大なファイルの途中から...
-
VBAコードを張り付け後のエクセ...
-
並び方、
-
cgiでサーバーにファイルを追加...
-
Perlの変数に文字数制限(容量...
-
MATLAB グローバル変数の宣言
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
DOSコマンドで、標準出力を出力...
-
sprintfについて
-
エクセルVBAで素数だけを出力す...
-
C言語の問題について
-
Perl<->Oracle間での文字化けに...
-
log2の「正確な」計算方法
-
教えて!perlから.exeファイル...
-
重複するデータを抽出できる秀...
-
Perlでファイルの末尾から指定...
-
CGIから外部コマンド実行時の標...
-
ファイル出力の改行コードをLFに
-
至急お願いします。C言語で.img...
-
LWPでPOST送信した後に送信先に...
-
perlでcsvの出力について
-
バッチファイルで、記号を含む...
-
Perl 内で実行される Perl が S...
-
文字コードの変換(Shift-JISか...
-
Perlでエラーログに日時をつける
-
Active Perl の動作異常について
おすすめ情報