grepの検索でテキスト内のひとつでも全角文字がある行を
抽出したいと思ってます。1つの方法は見つかったのですが、
時たまバグがあるそうですので、
他の方法を探そうと思ってます。
わかっている方法は、以下のとおりです。
> grep -n '.*[^ -~。-゜].*' test_data.txt

よろしくお願いします。

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

A 回答 (1件)

「ASCIIに含まれる文字だけ」の行以外という案で、


LANG=C で、ロケール(言語)を英語にした上で、grep -v で除外を指定。

LANG=C grep -n -v '^[[:cntrl:][:print:]]*$' test_data.txt
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。
やってみたのですが、半角カタカナのみも反応してしまいました。
申し訳ないですが・・・

お礼日時:2009/10/21 09:23

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qgrepで'-x'がある行をgomi.txtから探すために

grep -x gomi.txt

を実行したのですが-xがオプションとみなされうまくいきません
どうしたらいいでしょうか?

Aベストアンサー

$ grep -e -x gomi.txt

Qlinux(UNIX) の grep で、あるディレクトリ以下を再帰的に見て、全ての *.html ファイルに grep をかける方法

linux(UNIX) の grep で、あるディレクトリ以下を再帰的に見て、全ての *.html ファイルに grep をかける方法を教えてください。
簡単な事なのかもしれませんが、コマンドから打つ場合、どのようにすればよいか、分かりません。
Windows の秀丸のgrepなら簡単に出来るのですが。。。
どなたか教えてくださいませ。。。

Aベストアンサー

例えば
grep pattern `find あるディレクトリ -iname *.html`

Q正規表現 '\(.*\)\.' の意味

目的がファイル名から拡張子を取り除きたいのですが
expr `basename hoge.sh ` : '\(.*\)\.'
で標準出力の結果が hoge となり目的を達成する事ができました。
しかし  '\(.*\)\.' の意味がよく理解出来なくて悩んでおります。
色々と試してみた結果になりますが

expr `basename hoge.sh ` : '\(*\)\.'  .を取ってみた
出力無し

expr `basename hoge.sh ` : '\(.*\) .\を取ってみた
hoge.sh

expr `basename hoge.sh ` : '\(.*\).'  \を取ってみた
hoge.s

expr `basename hoge.sh ` : '\(...\)\.' ...にした
出力無し

expr `basename hoge.sh ` : '\(....\)\.' ....にした
hoge

以上、よろしくお願い致します。

Aベストアンサー

expr コマンドの 「expr 文字列 : 正規表現」書式で正規表現中で \( \) が使われていた場合は、それに囲まれた範囲が結果として出力されます。このことは、man expr で調べられます。

あとは、 . 任意の文字列、 * 直前の0回以上の繰り返し、 \. ピリオド文字
というのがわかれば、ピリオドの直前までの文字列を取り出すことがわかると思います。

また、拡張子が .sh だということがわかっていれば、
basename hoge.sh .sh
でhogeが得られます。

Qdir /A /B /S *.txtをLinuxで

Windowsで

C:>dir /A /B /S *.txt

を実行すると、そのディレクトリ以下の*.txtファイルが
C:\abc\def\hij.txt
C:\abc\def\klm.txt
...
と出力されます。

これをLinux上で出来ないでしょうか。
ネット上で調べたのですが、私の実力では"/S"と同じことがLinuxでは出来ないようです。

Aベストアンサー

質問内容を正しく解釈しているかわかりませんので間違っていたらごめんなさいです。

例えば、/home以下の*.txtを出力するのならこんな感じでしょうか。

find /home -type f -name "*.txt"

おそらくlsコマンドではうまくいかないと思いますので。

Q*.txtファイルの最終行だけ参照して、バッチファイルを作りたい

*.txtファイルのなかに"test"という文字をfindstrコマンド又はfindコマンドで探して、出力したいのですが、全ての行を参照して出力するのではなくて、最終行だけを参照して出力するといったバッチファイルを作成したいのですが、どうやればいいのでしょうか?

どうぞよろしくお願いいたします。

Aベストアンサー

tail コマンドを探してきて入れる(インストール)

for %%f in (*.txt) do find "test" %%f | tail -1


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報