🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

1215閲覧

powershellで指定文字列を含む列検索について(指定文字列は完全一致)

zazabi

総合スコア24

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2019/11/08 00:41

編集2019/11/08 01:01

他の方の過去の解答を試してみましたが、解決出来なかったので質問させてください。
参考にした質問
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となっています。

以上、至らない点もありますがよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2019/11/08 00:51

で、質問記載のコードでは何がどうダメなのでしょうか? ・こういう入力の場合、2という結果になって欲しい ・このコードではxxという結果になる というのを具体的に記載いただかないと何が問題で何をお聞きになりたいのか読み取れないです。
zazabi

2019/11/08 01:02

ご指摘ありがとうございます。 修正させていただきました。
Y.H.

2019/11/08 01:14 編集

$wordに設定するのはそのまま「<指定文字列>」という文字列ですか?それとも「abc」ですか? 「<指定文字列>」であれば、該当するのは3行なので結果は3 「abc」であれば、該当するのは1行なので結果は1
zazabi

2019/11/08 01:18

ご指摘ありがとうございます。 私が誤解していたようで、「<指定文字列>」≠「<指定文字列>abc」で検索できると思っていました。 >$wordに設定するのはそのまま「<指定文字列>」という文字列ですか?それとも「abc」ですか? 「<指定文字列>」という文字列です。具体的にはサービス名です。
Y.H.

2019/11/08 01:20 編集

一旦取り消します。
zazabi

2019/11/08 01:21

>「参考にした質問」の「行」の数から、「列の数」という要件の違いがありますが >「列の数」を数えるために何か考えられたコードがあるのであれば記載ください。 (コマンド).Countで行を数えていると思っています。 参考にしたサイト:http://excel.wp.xdomain.jp/?p=149
Y.H.

2019/11/08 01:22 編集

> 「<指定文字列>」という文字列です。 「(_空白__)<指定文字列>(_空白__)」とすればよいのでは?
zazabi

2019/11/08 01:33

試している最中に、関数countを使用する際の引数を間違えていることに気づきました……。 >入力ファイルの「(_空白__)<指定文字列>(_空白__)」とすればよいのでは? 結果は出力してほしい2になりました。ありがとうございます。 「■試みた文字列」で挙げた文字列を一通り再度試してみて、「 <指定文字列> 」でも同様の結果が得られたのでそちらに使用と思います。 親身にコメントいただきありがとうございました。
guest

回答1

0

ベストアンサー

Powershell

1PS C:\temp\> type .\input.txt 2aaaaaa(_空白__)<指定文字列>(_空白__)<指定文字列>(_空白__) 3aaaaaa(_空白__)<指定文字列>(_空白__)<指定文字列>(_空白__) 4aaaaaa(_空白__)<指定文字列>abc(_空白__)<指定文字列>abc(_空白__) 5PS C:\temp\> (Select-String -Path "input.txt" -Pattern '(_空白__)<指定文字列>(_空白__)' -Encoding Default) 6 7input.txt:1:aaaaaa(_空白__)<指定文字列>(_空白__)<指定文字列>(_空白__) 8input.txt:2:aaaaaa(_空白__)<指定文字列>(_空白__)<指定文字列>(_空白__)

投稿2019/11/08 01:28

Y.H.

総合スコア7918

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問