正規表現演算子(~=)と呼ばれる別の演算子があり、これを使用して 2つの文字列を比較し、文字列に部分文字列が含まれているかどうかを確認できます。脚本:#!/bin/bash str='This is a bash tutorial' substr='bash' if [[ "$str" =~ .*"$substr".* ]]; then echo "String contains the ...
文字列(変数STR)の長さが0(空)でない場合にTRUE →-n if[-n"$STR"];thenecho"Nonzero"fi 正規表現による比較 exprコマンドで正規表現の比較ができる. ただし,exprコマンドは拡張正規表現が使えない.例えば,(Apple|Orange)は扱えない.bashやzshは後述の方法を使ったほうがよい. ifexpr"123-45...
正規表現を使用して部分文字列の長さを比較して取得できます (正規表現の詳細については説明しません。正規表現はこちら についてお読みください)。正規表現を使用したマッチングのコードは次のとおりです。s=abcAXYZ123456_AaBbCc echo `expr match "$s" 'abc[A-Z]*.2'` echo `expr "$s" :...
はじめに一部の POSIX シェルには、シェル自体に正規表現対応の機能が含まれており、外部コマンドに依存せずに正規表現による比較を行えます。すべての POSIX シェルで使えるわけではありませんが…
やりたいことの節で挙げた通り、シェル変数にセクション名から生成した接頭辞をつけたり、.iniファイルのparameter名がシェル変数に使えない文字列含んでいた場合には適宜変換することを行いたい。安直な方法としてはsedを何回も呼んで処理する方法もあるが、できればsedの1プロセス数で処理で...
Bash では、sedコマンドを使用して文字列の最初の文字を削除できます。また、^(行頭) 正規表現でs(置換) コマンドを使用できます。sコマンドを使用すると、文字列内のパターンを検索し、その文字列を別の文字列に置き換えることができますが、^正規表現は行頭に一致します。
すでにQiitaにもいくつか記事があるが ^1、Bashでの各種の括弧はそれぞれ意味がある。自分でも知らなかったBashの括弧もあったので、改めてまとめてみた。なお、Bashの話ではあるが、Bo…