パターンマッチについてなんですが、このコマンドはマッチした行を出力するコマンドなんですが。実際にはパターンマッチをした文字列だけを表示したいという場合にはどのようにしたらよいのでしょうか?スクリプトを書くしかないのでしょうか?できればその例を教えてください。お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

例を、ということなので。



Perl で、パターンマッチに ( ) を使い、$1 でそれを出力するようにすれば、マッチした文字列だけを表示させることはできます。
例えば、以下のようなスクリプトはどうでしょうか。
――――――――――
#!/usr/local/bin/perl
# Usage: grep2 pattern filename
$pattern = $ARGV[0];
$filename = $ARGV[1];
open(IN, $filename) or die("$filename: $!\n");
while (<IN>) {
  next unless /($pattern)/;
  print "$1\n";
}
close(IN);
exit(0);
――――――――――
これで、grep2 pattern filename とやれば、pattern にマッチする文字列だけがダーッと出てきます。
パターンには、正規表現も使えます。(シェルで解釈されないよう、' ' で囲む必要があります。)

でも、こんなことして、何か意味があるのでしょうか…?
行数でも一緒に表示させるようにすれば、使い道が出てくるのかな?
    • good
    • 0

grep では出来ないですね。


perl を使いましょう。マッチした文字列を抽出することが出来ます。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qgooスマホって使いやすいですか?

gooスマホは使いやすいですか?
知人がgooスマホを使っており、gooスマホがあることを初めて知りました。
スマホをどういった用途で使用するのかにより、使いやすいかどうかは変わるかと思いますが、
gooスマホを使用されている方でgooスマホが使いやすいかどうか知りたく質問しました。
宜しくお願い致します。

Aベストアンサー

gooスマホ、種類があるので迷いますよね。価格も違いますしね。
私は、goo04を使用している者です。
私は、おサイフケーターが良かったので、goo04を使用してます。
販売価格は高めかもしれませんが、以下の機能がついていますし、使用しやすいので満足してます。

・キャップレス防水
・おサイフケータイ
・赤外線通信
・伝言メモ(簡易留守録設定)
・緊急地震速報

以下のページにgooスマホの比較表が掲載されているのでよければご参考ください。
http://store.ntt.com/p/set/monev_goospz

Qシェルスクリプトである文字列から一定の文字列を取得する方法

cshのスクリプトを書いているのですが、ある文字列から文字列を取得するにはどうしたらよいでしょうか?
具体的には、
aaaaaaabbbbb という文字列があってここから aaaaaaa だけ取り出すには
どうすればよいでしょうか?
ただし、aの文字は可変でbは固定の文字列です。

Aベストアンサー

補足されたので補足返しというこって

最後のbbbの部分の文字列長が固定でないとすると

sed 's/[b]*$//g'

でいけるはず。

もめるのももともとの文字列フォーマットがあきらかでないからだと思うので、文字列フォーマットを説明できる程度によく考えましょう。

それを正規表現にできれば(shell,sed)スクリプトなどできたも同然です。awkやperlで制御構造をもたせる場合はもう少しかかりますが。
今後のためにも正規表現を勉強しましょう。

Q補足№2 gooスマホ部への

すみません 先ほど 一番 始めに goo スマホ 部への 教えてgoo 質問 投稿 を したものですが 、 補足が 出てきましたので 、 №2記事を 書きます 。 わたしの 現状 ① 以前は すべて Web pageから 質問したり していた のと 、
② ログイン 状態か? ログイン状態で ないかの 不明な 不具合の 時間帯が あったため、質問 そのものが 消えて しまって、 gooスマホ部さん自体が解答 返信 しようのない 状態かも しれない 。

③ まったく goo スマホ 部への 質問の 仕方も 、 解答の 受け取り方も 良く 把握しない内に 質問 を してしまった 。 ④goo スマホ部へ 質問 したときの マイページ みたいな ものが 、 探すのですが 見当たらず 自分の ID が 表示 されるはずの 、 < こんにちは ● ● さん > みたいな 部分が 見つけられない 。 ⑤そもそも 最近 ◎ 教えてgoo の 会員登録ログイン ページも 。 ◎ goo スマホ 部 Q &A ページも 。 ◎ goo ID トップ ページ goo サービス も 。
全部 一括して すぐ 利用できる ものだと 勘違いしていて 。

ひとつひとつ 、 goo サービス の 中でも 独立 している という 感覚が なかった 。
⑥ もともと goo ID に 不具合が あり 、 不具合の あるまま 各 ページに アクセスして 、 マイページが ないことなどで 、 さまよっていた 。

とかとか が 、 現状の 精一杯の 説明です 。 とりあえず、ゆうべ gooのサービス トップ ページ ログイン に 関しましては 、 Tablet 版 goo アプリ Icon を インストール し 、 不具合が なくなりスムーズになり 、 マイページも < ようこそ ● ● さん > といった 具合に 落ち着きました 。
それと 教えてgoo 会員登録もたったいま さきほど 済ませ 、 質問 投稿 アプリも Installして そこから Loginしましたら 、 無事 、 自分の goo IDの マイページ が 把握できました 。
goo スマホ 部への 場合は 、 会員 登録が いるのか ? 詳しい ことは 良く 解りませんが 、 自分の マイページが 見つからず 、 有料じゃ ないと 、 解答ないのかな ? なんて 考えてますが 。 さきほど 無料 Installの goo スマホ部 質問 投稿 アプリ という ものを 見つけました 。

まだ Installは していませんが 、 goo スマホ 部 の 楽しみ方や、 マイページの こなしかた 自体が わかりません 。 どうぞ 宜しく お願い致します m(__)m 。

すみません 先ほど 一番 始めに goo スマホ 部への 教えてgoo 質問 投稿 を したものですが 、 補足が 出てきましたので 、 №2記事を 書きます 。 わたしの 現状 ① 以前は すべて Web pageから 質問したり していた のと 、
② ログイン 状態か? ログイン状態で ないかの 不明な 不具合の 時間帯が あったため、質問 そのものが 消えて しまって、 gooスマホ部さん自体が解答 返信 しようのない 状態かも しれない 。

③ まったく goo スマホ 部への 質問の 仕方も 、 解答の 受け取り方も 良く 把握しない内に...続きを読む

Aベストアンサー

パソコンからコメントします
(この回答は教えて!gooからです)

>goo スマホ 部 の 楽しみ方や、 マイページの こなしかた

goo スマホ 部とマイページは関係ない気がします
教えて!gooのマイページでは質問履歴や回答履歴が閲覧可能ですが
goo スマホ 部 での回答はgoo スマホ 部のスマホ部員のみの回答と思います
そもそもgoo スマホ 部にマイページってあるの?

goo スマホ 部のよくある質問
http://sp.oshiete.goo.ne.jp/pages/help/

goo スマホ 部のトップページ
(右下のgoo スマホ 部に関するお問い合わせはこちらでメール出来る)
http://sp.oshiete.goo.ne.jp/

教えて!gooからの回答や質問はログインが必要ですが
goo スマホ 部でパソコンからログインしていない状態でも
質問出来ると思います
(試した訳ではないので未確認)

QHP3000はPS(ポストスクリプト)出力できますか?

私の友人から相談を受けました。
友人会社は本社がアメリカにありますが
HP3000という機械(独自OS?)を使用中です。
そこから直接日本への出力支持を行なっているようですが
あるHPプリンタ以外は出力できないそうです。
私の推測ではHP3000が出力時PDL(ページ記述言語)にPCLを使用しているのでは?
と思ってますがそうそうそれに対応した国内プリンタは存在しないと思います。
PS対応であれば国内にもたくさん販売されているので
それで出力できるかどうかを試したいのですが
実例がないとアメリカ事務所に相談できないというのです。

どなたか・・・
対策わかりますか?

Aベストアンサー

HP3000はHPUXというユニックスを搭載したワークステーションと
思われます。unixであればPSに対応したプログラム(GhostScript
や、X11)は山のようにありますから、問題ない(=PSに出力できる)
ような気がします。
しかし、問題は、業務用に使われているということですので、
何か、専用のアプリケーションを中心に使っているわけですね。
すると、その「出力」を取り出して加工できるかどうかが問題に
なります。標準的なunixのアプリであれば、大抵は出来るので
すが、業務用の専用アプリの場合、プリンタポートに直接出力
してしまっている可能性があります。
その場合でもバックグラウンドで、プリンタポートを横取りして
PCL→PSの変換をしてくれるジョブを走らせれば何とかなりますが、
unixに詳しい人がついていないと難しいかも知れません。

[下のFAQからの抜粋です]
Hewlett Packard Printer Control Language (.pcl) files can
be printed on any HP printer. If you have a non-HP printer,
you can use GhostScript, or a number of other programs,
to convert the PCL to PostScript.

参考URL:http://nms.hartfordschools.org/library/hp-ux/comp.sys.hp.hpux_FAQ.html

HP3000はHPUXというユニックスを搭載したワークステーションと
思われます。unixであればPSに対応したプログラム(GhostScript
や、X11)は山のようにありますから、問題ない(=PSに出力できる)
ような気がします。
しかし、問題は、業務用に使われているということですので、
何か、専用のアプリケーションを中心に使っているわけですね。
すると、その「出力」を取り出して加工できるかどうかが問題に
なります。標準的なunixのアプリであれば、大抵は出来るので
すが、業務用の専用アプリの場合、プリン...続きを読む

Q教えてGooはパソコンと携帯(スマホ)どっち?

僕はパソコンのブラインドタッチが遅いです。
教えてGooはスマホのフリック打ちの方が早く、いつもスマホです。
みなさんはパソコンとガラケーとスマホのどれをメインで教えてGooを使ってますか?
教えてGooの質問や回答でパソコンを使う癖をつければブラインドタッチも早くなりますかね?

Aベストアンサー

パソコンからです。

>パソコンとガラケーとスマホのどれをメインで
入力の速さもさることながら、1画面あたりの情報量が全く違うのでスマホやガラケーはほとんどまったく使いません。

>教えてGooの質問や回答でパソコンを使う癖をつければブラインドタッチも早くなりますかね?
質問や回答の投稿はタッチタイピングのスキルの「確認」程度にはなるでしょうけど、スキルを上げたいなら専用のサイトやツールを使った方がいいと思います。

ここでの質問や回答は早いタイピングよりも正確なタイピング、正確なタイピング以上に正確な文章が望まれるはずですから。

Qiptableコマンドを複数記載したスクリプトを実行したいです。

Linuxのコマンドについてお聞きしたいです。
iptableコマンドを複数記載したスクリプトを作成し、そのスクリプトを実行することによってパケットフィルタリングの設定をしようと思っています。
Windowsで下記のようなファイルを作成しました。

#!/bin/sh

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

iptables -P INPUT DROP
iptables -P FORWARD DROP

iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -d 210.98.76.54 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth1 -d 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -d 202.228.202.2 -p udp --sport 53 --dport 1024:65535 -j ACCEPT

iptables -A INPUT -j LOG --log-prefix "### INPUT ###"
iptables -A FORWARD -j LOG --log-prefix "### FORWARD ###"


これをLinuxの/rootに作成したbinフォルダにフロッピーでコピーしました。
ファイル名をfilterにしたので、[root@linux root]# filter とし、Enterとし、
スクリプトを実行して設定を反映させようとしました。

しかし、: bad interpreter: そのようなファイルやディレクトリはありません
と出てしまいます。

何が足りないのでしょうか?

Linuxのコマンドについてお聞きしたいです。
iptableコマンドを複数記載したスクリプトを作成し、そのスクリプトを実行することによってパケットフィルタリングの設定をしようと思っています。
Windowsで下記のようなファイルを作成しました。

#!/bin/sh

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

iptables -P INPUT DROP
iptables -P FORWARD DROP

iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -...続きを読む

Aベストアンサー

スクリプトをWindowsで作成したからです.
改行コードに余分な<CR>があり,/bin/sh<CR>という
コマンドは無いので,bad interpreter になります.

dos2unix というコマンドが使えれば,簡単コードを
変換できます.

まあ,今後のためには,Linux上でエディタを使える
ようになることをお勧めします.

Qgooスマホ+simフリーについて

現在乗り換えでgooスマホ+simカード(3G)を検討しています。
色々調べてみた結果、端末料金、月々のサポート料金などからみて
gooスマホ+simフリーがいいかなと思っております。
実際に使用されている方がいらっしゃいましたら感想などを聞いてみたいと思います。

Aベストアンサー

gooのスマホもいろいろありますが、コスパ的にはg03を半額の時に買えればお得です。最近も半額セールあったのですが、タイミングですね。1番安いのはg01で一万円で買えますが今買うのはあまりお得ではないような気がします。

simはmineoとか面白い試みやっていてオススメです。

Qgrepコマンドでの文字列検索

grepコマンドについて質問です。

grepコマンドでCSVファイルを参照し、ある項目に特定の文字列でないものがあれば、そのファイル名を取得する処理をしたいと思っています。

つまり、ある項目を$strとすると
$str <> 'aaaaaa'
という処理をgrepで行おうと考えています。

現状では、
grep -l '^[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^(aaaaaa)]' ファイル名

等を試していますが、[^(aaaaaa)]だと一文字目しか判別できていないようです。[^a{6}]などもうまくいきません。

何かいい方法があれば教えて頂きたいと思います。
宜しくお願いします。

Aベストアンサー

コマンド一発でファイル名を取得する方法は思いつないので、とりあえずシェルを作ってみました。

下記シェルをファイルがあるディレクトリに置いて、検索文字列をパラメータにして実行してみてください。
シェル名:test.sh、検索文字列:aaaaa の場合
./test.sh aaaaaa

◎注意点
$7の部分はCSVファイルの何番目の項目かを表しているので実際の値に変えてください。
【CNT=`awk -F, '{print $7}'・・・・】
例:2番目の項目なら$7⇒$2

------------------------------------------------
#/bin/ksh
SHELLNM=$0
STRING=$1
ls | awk '{print $1}'| grep -v $SHELLNM | while read LIST
do
set -- `echo $LIST`
FILENAME=$1
CNT=`awk -F, '{print $7}' $FILENAME |grep $STRING|wc -l|awk '{print $1}'`
if (( $CNT != 0 ))
then
echo $FILENAME
fi
done
exit 0

コマンド一発でファイル名を取得する方法は思いつないので、とりあえずシェルを作ってみました。

下記シェルをファイルがあるディレクトリに置いて、検索文字列をパラメータにして実行してみてください。
シェル名:test.sh、検索文字列:aaaaa の場合
./test.sh aaaaaa

◎注意点
$7の部分はCSVファイルの何番目の項目かを表しているので実際の値に変えてください。
【CNT=`awk -F, '{print $7}'・・・・】
例:2番目の項目なら$7⇒$2

------------------------------------------------
#/bin/ksh
...続きを読む

Qgooメールをスマホに設定したい

スマホ使用数日の初心者です。
PCのgooメールを外出時、スマホで見たいと思うのですが
スマホに設定することは可能ですか?
アカウントや設定方法がわからないので教えて頂きたいの
ですが…

 

Aベストアンサー

gooメールのフリー版は、スマートフォン版を使えばよいのではないですか?
(「gooメール」のスマートフォン版を提供開始。Android/iPhone対応)
http://www.gapsis.jp/2011/06/nttgooandroidiphone.html
(紹介ページ)
http://mail.goo.ne.jp/info/smartphone.html

QUNIX コマンドで 複数ファイルの文字列置換の方法

UNIX初心者です。
UNIXのコマンドで複数のファイルの中身を同時に置換できないでしょうか?

自分で探しては見たのですが、"sed"しか見つかりません。
sed 's/aaa/AAA/g' <file1> file2
という方法では、ひとつずつなので、時間がかかってしまいます。
UNIXコマンドには、ありませんでしょうか。
また、無ければどのような知識が必要でしょうか。
私の知識が少ない為、内容が判りにくいとは思います。
すみませんが、よろしくお願いします。

Aベストアンサー

シェルスクリプトを書くのが普通だと思います。
例えばCシェルならば

foreach f ( `ls` )
 sed 's/aaa/AAA/g' < ${f} > ${f}_changed
end

という具合にすれば、カレントディレクトリの全ての
ファイルについて、変換して新しいファイルを作ります。

#Cシェルのスクリプトなんか「普通」じゃないという
#人もいますが、あしからず。


人気Q&Aランキング

おすすめ情報