

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ランキング
-
画像生成AIのプロンプトの作り...
-
数学、プログラミング、物理、...
-
vba クリップボードクリアにつ...
-
pip --versionがエラーになる
-
Python 3.12.2 か一番最新のパ...
-
Google ColaboでGUI作成
-
pythonの実行に関する質問
-
CSVファイルの複数行削除
-
GoogleAppsScript文字列置換の...
-
Pythonについて。
-
OS入ってる機器のソフト・アプ...
-
パイソンのソースコードをChatG...
-
MOVEコマンドでサブフォルダー...
-
プログラミング言語のバージョ...
-
AIがプログラムする時代のプロ...
-
趣味がプログラミングだと言っ...
-
pythonについて(初心者です)
-
itエンジニアに就職希望で未経...
-
pythonでAmazonのほしいものリ...
-
Kotlin言語について。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
趣味がプログラミングだと言っ...
-
pythonについて(初心者です)
-
プログラミング言語のバージョ...
-
AIがプログラムする時代のプロ...
-
MOVEコマンドでサブフォルダー...
-
画像生成AIのプロンプトの作り...
-
Google ColaboでGUI作成
-
VBAでパワーシェルを実行したい...
-
Python... 環境設定 初心者です...
-
COPYコマンドで、最後に1文字...
-
10進数から2進数に変換 例 185 ...
-
FILMORAを使っているのですがテ...
-
pythonでhtmlファイルの指定文...
-
HTMLソースが表示のページのも...
-
⚠️至急です!⚠️ Yahoo!知恵袋の...
-
Pythonでの文字列からfloatへの...
-
Webサイト内に埋め込んだmp4動...
-
テキストファイルの1行目のみを...
-
ネットワークフォルダの中身を...
おすすめ情報