最初の 2 つの ";" の間の文字列を取得するにはどうすればよいかと考えていました。Bashでsedを使用..
例えば:
入力:
END; startprocess -noprint; CWD: 8995; RUID: nmsadm; EUID: nmsadm; ERRCODE: 0;
出力:
startprocess -noprint
cut
ここではおそらく最良のオプションですが、これはbash自体でこれを行う方法の例です
IFS=';' read -r _ var _ <<<
'END; startprocess -noprint; CWD: 8995; RUID: nmsadm; EUID: nmsadm; ERRCODE: 0;'
echo $var
外部ユーティリティを呼び出す必要はありません。純粋な [tag_bash] での簡単な解決策は次のとおりです。
x='END; startprocess -noprint; CWD: 8995; RUID: nmsadm; EUID: nmsadm; ERRCODE: 0;'
[[ $x =~ \;[^\;]+\; ]] && echo "${BASH_REMATCH:1:((${#BASH_REMATCH}-2))}"
出力:
startprocess -noprint
またはもっと単純なもの:
x=${x#*;}; echo "${x%%;*}"
sed
は最善の解決策ではありませんcut
。fedorqui の回答のように使用する方が適切ですが、必要な場合は次のようになります。
$ str='END; startprocess -noprint; CWD: 8995; RUID: nmsadm; EUID: nmsadm; ERRCODE: 0;'
$ echo "$str" | sed 's/^[^;]*;\([^;]*\);.*$/\1/'
startprocess -noprint