3

このAWKスクリプトと同等のバッチスクリプトが必要です。

awk '{print $3}'

ファイルには次の内容が含まれています。

XXX YYY : 8
Rrr rrr : 7
ddd rrr : 9

印刷するバッチスクリプトを取得したい

8, 7, 9

各値をループに割り当ててif条件にリダイレクトする方法はありますか?

4

5 に答える 5

7

Windows Batch スクリプトを要求しているのか、awk スクリプトを要求しているのかわかりません。両方を以下に示します。

test.txt:

XXX YYY : 8
Rrr rrr : 7
ddd rrr : 9

AWK :

awk 'NR > 1 {printf ", "}{printf $4}END{printf "\n"}' test.txt

出力:

8, 7, 9

Windows バッチ スクリプト:

@echo off
SET _c=
FOR /F "tokens=4 delims= " %%G IN (test.txt) DO (
    IF DEFINED _c <nul set /p z=", "
    <nul set /p z=%%G
    SET _c=1
)

出力:

8, 7, 9
于 2012-10-08T07:26:22.080 に答える
2
awk -F: '{x=x","$2;}END{print substr(x,2,length(x)-1)}' your_file

以下でテスト済み:

> cat temp
XXX YYY : 8
Rrr rrr : 7
ddd rrr : 9
> awk -F: '{x=x","$2;}END{print substr(x,2,length(x)-1)}' temp
 8, 7, 9
于 2012-10-08T06:30:26.113 に答える
1

別の解決策:

 awk '{ if(NR<3) printf "%s, ", $4 }END{ print $4 }' file

結果:

echo -e "XXX YYY : 8\nRrr rrr : 7\nddd rrr : 9" | awk '{ if(NR<3) printf "%s, ", $4 }END{ print $4 }'
8, 7, 9
于 2012-10-08T07:00:01.730 に答える
0

端末に直接出力

すでに awk.exe がある場合は、手順 (3) を試してから試してください (1:3)。

AWKは、後方互換性もあるGAWKに取って代わられました (チェック(3) )。

  1. 適切な GAWK を入手する

    そこで、セットアップリンクを実行する Gawk v3.6.1 を使用しました。gawk-3.1.6-1-setup.exe を実行します。

    インストール中に、抽出/インストール先のディレクトリへのパスをメモし、バイナリとドキュメントの両方にチェックマークを付けます。残りは好みです。

  2. GAWKを抽出する

    インストールしたら、インストールでメモしたパスに移動し、 bin ディレクトリに移動して、インストール ディレクトリからgawk.exeを抽出します。gawk.exeをコピーし、gawk 機能を提供するバッチ ファイル (*.bat) のディレクトリに移動して貼り付けます (これは移植可能な *.exe であり、バッチの目的は自己完結型である必要があるため)。

  3. 適切なコマンドを使用する

    これらのコマンドは、適切にフォーマットされたキーワードを端末に直接出力します。インターネットを精査するのに丸一日かかり、約2000行の長さのテキストファイルを読み取り、中括弧の前にBEGINを見つけました。*\man\cat1のgawk.1.txtを読むまで、私には思いつきませんでした

    gawk "BEGIN { print \"Hello world\"}"
    
    REM If you have printf from GNUwin32
    gawk "BEGIN { printf \"Hello world\"}"
    
于 2015-08-21T16:16:38.830 に答える