[解決済み] sedによる大文字小文字を区別しない検索と置換
質問
SED を使って、ログファイルからテキストを抽出しようとしています。検索と置換はそれほど問題なくできるのですが。
sed 's/foo/bar/' mylog.txt
しかし、大文字小文字を区別せずに検索したいのです。ググってみると、どうやら
i
をコマンドの末尾につけるとうまくいきそうです。
sed 's/foo/bar/i' mylog.txt
しかし、これではエラーメッセージが表示されます。
sed: 1: "s/foo/bar/i": bad flag in substitute command: 'i'
何が問題なのか、どうすれば解決できるのか?
どのように解決するのですか?
更新
: で始まる
macOS Big Sur (11.0)
,
sed
現在
はする
をサポートしています。
I
フラグを使用して大文字小文字を区別しないマッチングを行います。
をサポートしているので、質問のコマンドは現在動作するはずです (BSD の
sed
はそのバージョンを報告しませんが、あなたは
man
ページの一番下にある日付で判断できます。
March 27, 2017
またはもっと新しいものであるべきです); 簡単な例です。
# BSD sed on macOS Big Sur and above (and GNU sed, the default on Linux)
$ sed 's/ö/@/I' <<<'FÖO'
F@O # `I` matched the uppercase Ö correctly against its lowercase counterpart
注意
I
(大文字) はフラグの文書化された形式ですが
i
も同様に動作します。
同様に
macOS ビッグサー (11.0)
awk
現在
は
ロケールアウェア
(
awk --version
を報告する必要があります。
20200816
またはもっと新しい)。
# BSD awk on macOS Big Sur and above (and GNU awk, the default on Linux)
$ awk 'tolower($0)' <<<'FÖO'
föo # non-ASCII character Ö was properly lowercased
以下が該当します。 macOS Catalina まで (10.15) :
はっきり言って、macOS では
sed
- であり、これは
BSD
の実装ですが、大文字小文字を区別しないマッチングをサポートしていません。
- 信じがたいことですが、本当です。その
は以前は
を示すもので、それ自体が
GNU
sed
コマンドのおかげで、その地位を獲得しました。
perl
-をベースにした解決策がコメントで言及されたためです。
を作るために、その Perl ソリューション で動作します。 外字 も、UTF-8経由で、以下のように使用します。
perl -C -Mutf8 -pe 's/öœ/oo/i' <<< "FÖŒ" # -> "Foo"
-
-C
は、現在のロケールが UTF-8 ベースであると仮定して、 ストリームとファイルに対する UTF-8 サポートを有効にします。 -
-Mutf8
はPerlに ソースコード をUTF-8として解釈します。-pe
に渡される文字列) - これは、より冗長な-e 'use utf8;'.
ありがとうございます。 マーク・リード
(ただし
を使って
awk
もオプションではありません。
のように
awk
を macOS で使用する(つまり。
BWK awk
と
BSD awk
) はロケールを全く意識していないようで、その
tolower()
と
toupper()
関数は外字を無視します(そして
sub()
/
gsub()
はそもそも大文字小文字を区別しないフラグを持っていません)。
の関係についてのメモです。
sed
と
awk
を POSIX 標準に変換します。
BSD
sed
そして
awk
は機能を制限する
ほとんど
は
POSIX
sed
そして
POSIX
awk
の仕様が義務付けられているのに対し、GNU の対応するものはより多くの拡張を実装しています。
関連
-
[解決済み] Vimで大文字小文字を区別しない検索をする方法
-
[解決済み] sedで改行をスペースに置き換えるには?
-
[解決済み] 大文字と小文字を区別しない文字列比較を行うにはどうすればよいですか?
-
[解決済み] 大文字・小文字を区別せず含む
-
[解決済み] Postgresqlで「大文字小文字を区別しない」クエリを作成する方法は?
-
[解決済み】大文字・小文字を区別しない「Contains(string)
-
[解決済み】re.compileを使わずに大文字小文字を区別しない正規表現?
-
[解決済み】大文字・小文字を区別しない置換
-
[解決済み】大文字・小文字を区別しない検索機能
-
[解決済み] IntelliJ for Mac OS Xの "Alt-Insert "に相当するものは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
BlackApple-Minisforum u820 opencore0.6.9 config.plist
-
[解決済み] MacVimをOS Xにインストールするにはどうしたらいいですか?
-
[解決済み] ターミナルで開くファイルのデフォルトエディタを変更しますか?(例:TextEdit/Coda/Textmateに設定する。)
-
[解決済み] MacでMonoDevelopを複数起動するにはどうしたらいいですか?
-
[解決済み] PostgreSQLサーバーの状態を確認する方法 Mac OS X
-
[解決済み] OS X で $PATH 変数の現在の値を見るにはどうしたらいいですか?
-
[解決済み] Mac OS Xのビルトインvimのアップデート
-
[解決済み] dyld: ライブラリがロードされません。rpath/libswiftAVFoundation.dylib です。
-
[解決済み] Mac OS X でファイルがどのプロセスで使用されているかを確認する
-
[解決済み] macプロンプトでのスクリプト実行 "Permission denied"