PCでAWKコマンドを使いたくてgawkを使ってみたのですが、
やっぱりawkのような書き方では上手く実行できないみたいです。
gawkのバージョンは v3.1.6です。
コマンド (awk) awk -F, '{printf("copy aaa\%s bbb\%sn",$0,$0)}' list.txt
単純にDOSのバッチをファイルから作りたいだけなのですが・・・gawkではどのように書けば良いのか教えてください。お願いします。
仕事でUNIXを使っていたのですがPCに移行するという話がでていて、今までのunixコマンドをPCで動くようにソースを書き直して行かなくてはならないのにパスを『/』から『\』にしただけでは全く動きませんでした。やっぱりUNIXのawkでは出来てPCのgawkでは出来ないこともあるのでしょうか?それとも書き方の問題でしょうか??
No.1ベストアンサー
- 回答日時:
>やっぱりawkのような書き方では上手く実行できないみたいです。
エラー箇所と内容を返してくると思いますが具体的にどういう状況でしょうか。
単純に引用符の問題だけのように思えますが↓でどうでしょう。
※一部単純な誤記と思われる部分(\→\\、n→\n)も変更しました。
gawk -F, "{printf(\"copy aaa\\%s bbb\\%s\n\",$0,$0)}" list.txt
No.3
- 回答日時:
こんにちは。
cmd.exe の引用符は " とヘルプに記載されています。' は使用できなかったのでは??
引用符の説明は、cmd.exe /? リターンとしてみてください。簡単な解説が表示されます。あるいは『コマンドプロンプト 引用符』『cmd.exe 引用符』を検索語に設定してググってみるとよいです。
ただ、bash(1) の QUOTING の仕様と cmd.exe はずいぶん異なります。その仕様差異を吸収するアプローチは、すでに回答が寄せられている Awk ファイルへのプログラムの配置変更を回答者もおすすめします。ま、とはいえ、例示スクリプトの内容であれば ', " を手直しすれば One-liner でも問題ないと思います。実際、回答者も日常このような書き捨てプログラムを書いていますから。慣れれば指が勝手にエスケープしてくれるようになります。
C:\tmp2\tool\UBTrek>gawk "/[dD][eE][fF]_[dD][lL][lL]/ { $1 = \"\"; print }" *.uws lib\*.uws | gawk "{ match($1, /^([a-zA-Z0-9_])+/, arr); print arr[0];}" | gawk "{ Arr[$1]++ } END { for (i in Arr) { print i \"\t\" Arr[i] }}" | gawk "{ Arr[FNR] = $0 } END { asort(Arr); for (i = 1; i <= length(Arr); i++) { print Arr[i] }}" | gawk "{ print NR, $0 }" > result.txt && result.txt
すごいですね!こんなに長いのも1行で書くことが出来るのですね!!
恐れ入りました。gawk自体は何の問題も無かったみたいですね。
ありがとうございます。
No.2
- 回答日時:
gawkとawkの違いではないですね。
"・・・" の中に \ を書くときは \\ と書く必要があります。またこのコマンドはバッチファイルに書くかコマンドプロンプトからの実行でしょうが、バッチを処理するCMD.EXEは " をうまく扱えないので、直接書かずにgawkスクリプトは別ファイルに書いた方が良いです。
この程度だと直接書いても大丈夫ですが、ちょっと複雑になると駄目です。
aaaa.bat ===================================
gawk -f bbbb.awk list.txt > out.txt
============================================
bbbb.awk ===================================
{printf "copy aaa\\%s bbb\\%s\n",$0,$0}
============================================
これが初めはやりたかったのですが・・・やっぱり知識不足でした。
でも移行が出来るというのが分かったので良かったです。
本当に有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- その他(プログラミング・Web制作) awkの BEGIN{RS=""} で空行を削除できるが、削除できる仕組みが分からない。 1 2023/05/02 14:14
- その他(プログラミング・Web制作) awkの$NR 2 2022/10/24 11:11
- その他(プログラミング・Web制作) awkの文字列比較はPOSIXロケールまたはCロケールにおいてバイナリ値の比較に使えるか gawkな 1 2023/04/22 09:21
- その他(プログラミング・Web制作) awkの正規表現での最左最短マッチング 3 2022/07/01 00:10
- その他(プログラミング・Web制作) テキストデータ変換(プログラミング、linux、python) 8 2023/08/08 16:39
- その他(Microsoft Office) PCを買い換えました。 今使っているノートパソコンが10年以上使っており新しく買い換えました。Win 5 2023/03/26 00:18
- Windows 10 USBにwindows10をいれて起動する方法 5 2022/04/14 14:29
- UNIX・Linux テキストエディタのVimもEmacsも飽きたし病んでしまいました。助けてください。 5 2023/07/05 15:56
- その他(プログラミング・Web制作) awkのtoupper() 1 2022/10/21 20:39
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
楽しくて最高のプログラミング...
-
ラズパイpico PIOモード
-
小学1年生の子です。塾に行かせ...
-
プログラミング
-
pythonで複数画像からgifを作る...
-
Pythonでgif画像が上手く作れない
-
プログラミング ソースコード
-
正規表現で複数マッチ条件で悩...
-
vba クリップボードクリアにつ...
-
windowsでテキストファイルの各...
-
Pythonって何を意識した言語な...
-
pythonにてseleniumを使うも、...
-
Gitについて質問。 クローンし...
-
スカラーのベクトル微分
-
matplotlibで任意の角度の円弧...
-
プログラミングで例えばゲーム...
-
Webサイト内に埋め込んだmp4動...
-
テキストファイルのファイル名...
-
Selenium4でボタンをクリックで...
-
昔のパソコン少年の武勇伝「店...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
chatGPTで次々と質問をしていく...
-
昔のパソコン少年の武勇伝「店...
-
スカラーのベクトル微分
-
ハッシュテーブル(連想配列)が...
-
最新のプログラム言語を学ぶに...
-
pythonにてseleniumを使うも、...
-
Windowsのアプリ開発ってなんの...
-
vba クリップボードクリアにつ...
-
Google ColaboでGUI作成
-
sublimit textっていうエディタ...
-
フリーランスのエンジニアって...
-
ExcelVBAでFormulaR1C1を列範囲...
-
matplotlibで任意の角度の円弧...
-
そのまま使っただけなのに・・...
-
家庭のパソコンで Python の 環...
-
初心者powershellのPS1ファイル...
-
Webプログラムってネイティブア...
-
httpリクエストの送り元の特定
-
プログラミングで例えばゲーム...
-
rpa化する言語としてら何があり...
おすすめ情報