Batchを使用してTXTファイルから特定の単語/番号をコピーするにはどうすればよいですか?


1

テキストファイル内の文字列の後にある特定の番号を検索する必要があります。たとえば、私はこのデータを持っています:

yyy = 80rr, xxx = 136rr, zzz = 95rr    

そして私はそのの間で数値をコピーするyyyrrxxxrrzzz rr。次に、これらの数値をエコーし​​ます。出来ますか?


stackoverflow.comでこれを尋ねてみてください
juniorRubyist

回答:


1

純粋にWindowsツールを使用する場合の最善の策は、おそらくPowershellです。ワンライナー:PSで既に:

$(sls '[0-9]+' filename.txt -allm).Matches.Value

CMD.EXEから:

powershell -c "$(sls '[0-9]+' test.txt -allm).Matches.Value"

filename.txt行だけを含むテキストファイル(と呼ばれる)の場合、次のように出力されます。

80
136
95

複数の行と1行に複数の数字があるファイルでテストしましたが、それでも動作し、各数字を独自の行に出力します。これで、エコーしたくない他の番号がファイルにある場合、それらもエコーされます。それを避けるために、次で終わる数字で一致させることができますrr

$(sls '[0-9]+rr' test.txt -allm).Matches | foreach {$_.Value.trim('r')}

または

powershell -c "$(sls '[0-9]+rr' test.txt -allm).Matches | foreach {$_.Value.trim('r')}"

0

Linuxでは、gawkコマンドを使用できます。私はこのようにしました:

    echo "yyy = 80rr, xxx = 136rr, zzz = 95rr" | gawk '{ match($0, /.*= ([0-9]+).*= ([0-9]+).*= ([0-9]+)/, array); printf "%d %d %d\n",array[1], array[2], array[3]}';

結果は次のとおりです。

    80 136 95

あなたの場合:

    cat file.txt | gawk '{ match($0, /.*= ([0-9]+).*= ([0-9]+).*= ([0-9]+)/, array); printf "%d %d %d\n",array[1], array[2], array[3]}';

彼はWindowsを使用しているため、これは役に立ちません。
juniorRubyist

理想的ではありませんが、Cygwinに移植できる場合があります。
ベルティエブ

Windowsにはさまざまなgawkポートがあります。私は、の一部だ1持っGOWの私のマシンにインストールされているツールキット
ジャーニーマンオタクは
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.