他の方の過去の解答を試してみましたが、解決出来なかったので質問させてください。
参考にした質問
https://teratail.com/questions/51873
■環境
OS:windows2012 リモート接続
■やりたいこと
あるテキストファイルの指定文字列を含んだ列の数を数える。
下記のテキストファイルでコマンドを使用した結果、2という結果にしたい。
しかし試したコマンドと文字列では3という結果になっています。
前後に空白の入る文字列で試みても「<指定文字列>abc」を弾くことができません……。
■テキストファイル
aaaaaa(空白_)<指定文字列>(空白_)<指定文字列>(空白_)
aaaaaa(空白_)<指定文字列>(空白_)<指定文字列>(空白_)
aaaaaa(空白_)<指定文字列>abc(空白_)<指定文字列>abc(空白_)
■コマンド
PowerShell
1$word = "<指定文字列>" 2$file = "<テキストファイルパス>" 3function count ($b,$c){ 4 (Select-String -Path $b -Pattern $c).Count 5} 6$x1 = (count $file $word)
■試みた文字列
^<指定文字列>\s*$,^<指定文字列>*$,^<指定文字列>$,\b<指定文字列>\b," <指定文字列> "
→全て結果は3となっています。
以上、至らない点もありますがよろしくお願い致します。
で、質問記載のコードでは何がどうダメなのでしょうか?
・こういう入力の場合、2という結果になって欲しい
・このコードではxxという結果になる
というのを具体的に記載いただかないと何が問題で何をお聞きになりたいのか読み取れないです。
ご指摘ありがとうございます。
修正させていただきました。
$wordに設定するのはそのまま「<指定文字列>」という文字列ですか?それとも「abc」ですか?
「<指定文字列>」であれば、該当するのは3行なので結果は3
「abc」であれば、該当するのは1行なので結果は1
ご指摘ありがとうございます。
私が誤解していたようで、「<指定文字列>」≠「<指定文字列>abc」で検索できると思っていました。
>$wordに設定するのはそのまま「<指定文字列>」という文字列ですか?それとも「abc」ですか?
「<指定文字列>」という文字列です。具体的にはサービス名です。
一旦取り消します。
>「参考にした質問」の「行」の数から、「列の数」という要件の違いがありますが
>「列の数」を数えるために何か考えられたコードがあるのであれば記載ください。
(コマンド).Countで行を数えていると思っています。
参考にしたサイト:http://excel.wp.xdomain.jp/?p=149
> 「<指定文字列>」という文字列です。
「(_空白__)<指定文字列>(_空白__)」とすればよいのでは?
試している最中に、関数countを使用する際の引数を間違えていることに気づきました……。
>入力ファイルの「(_空白__)<指定文字列>(_空白__)」とすればよいのでは?
結果は出力してほしい2になりました。ありがとうございます。
「■試みた文字列」で挙げた文字列を一通り再度試してみて、「 <指定文字列> 」でも同様の結果が得られたのでそちらに使用と思います。
親身にコメントいただきありがとうございました。
回答1件
あなたの回答
tips
プレビュー