作成している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を使って置き換えた後 | で渡せばいいだけの話。
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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
カンマ区切りのCSVファイルから"を削除したい
その他(プログラミング・Web制作)
-
ダブルクォーテーションの削除(置換)
Perl
-
AWKにて時刻差分を取得したい
その他(プログラミング・Web制作)
-
-
4
awkでバイト数を方法
その他(プログラミング・Web制作)
-
5
awkで改行を除いて文字列を抜きだす
その他(プログラミング・Web制作)
-
6
awkで切り出した2つのデータを変数に代入
UNIX・Linux
-
7
連想配列の初期化
その他(OS)
-
8
Linux環境 grepで改行コード(CRLF、LF)を検索できないで
UNIX・Linux
-
9
selectした結果の余計な余白を取るにはどうしたらよいのでしょうか
Oracle
-
10
SQLPLUSで結果を画面に表示しない
Oracle
-
11
CSVファイルの改行コード削除について
その他(プログラミング・Web制作)
-
12
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
13
awkの正規表現での最左最短マッチング
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイル出力の改行コードをLFに
-
エディターでは改行なのにメモ...
-
awkスクリプトでダブルクォーテ...
-
ドメインからIPアドレスあるい...
-
[awk]uniq -cで複数ファイルの...
-
機器のI/OをArduinoでSDに記録...
-
DOSコマンドで、標準出力を出力...
-
教えて!perlから.exeファイル...
-
オーバーラップ計算法について
-
Perlで特定行から特定行までを...
-
バッチファイルの作り方(CSV→...
-
VBAでCSVファイルの特定行を書...
-
C言語で特定の行を抽出する方法...
-
C言語のバイナリモードでのfsca...
-
close()で例外が投げられる理由
-
ヒアドキュメントの書き方
-
MATLAB グローバル変数の宣言
-
utf-8のCSVをshift_jisに変換し...
-
chdirがうまくできない
-
openした後、closeしないでプロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
DOSコマンドで、標準出力を出力...
-
重複するデータを抽出できる秀...
-
Perlでファイルの末尾から指定...
-
sprintfについて
-
[Perl]ファイル出力のエンコー...
-
エクセルVBAで素数だけを出力す...
-
文字コードの変換(Shift-JISか...
-
テキストファイルから日本語部...
-
sprintfで10進数を桁数指定で16...
-
ファイル出力の改行コードをLFに
-
Perlからsyslog経由でログを出...
-
PerlからのCSV出力
-
perlでcsvの出力について
-
教えて!perlから.exeファイル...
-
バッチファイルで、記号を含む...
-
perl CGIでのhttpヘッダー出力...
-
print文で&(半角)文字のエラー...
-
Perlでエラーログに日時をつける
-
紙にもホームページにも同じレ...
おすすめ情報