0

最初の 2 つの ";" の間の文字列を取得するにはどうすればよいかと考えていました。Bashでsedを使用..

例えば:

入力:

END; startprocess -noprint; CWD: 8995; RUID: nmsadm; EUID: nmsadm;  ERRCODE: 0;

出力:

startprocess -noprint
4

5 に答える 5

2

cutここではおそらく最良のオプションですが、これはbash自体でこれを行う方法の例です

IFS=';' read -r _ var _ <<<
'END; startprocess -noprint; CWD: 8995; RUID: nmsadm; EUID: nmsadm;  ERRCODE: 0;'
echo $var
于 2013-06-14T12:28:01.283 に答える
1

外部ユーティリティを呼び出す必要はありません。純粋な [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%%;*}"
于 2013-06-14T12:41:36.307 に答える
1

sedは最善の解決策ではありませんcut。fedorqui の回答のように使用する方が適切ですが、必要な場合は次のようになります。

$ str='END; startprocess -noprint; CWD: 8995; RUID: nmsadm; EUID: nmsadm;  ERRCODE: 0;'
$ echo "$str" | sed 's/^[^;]*;\([^;]*\);.*$/\1/'
 startprocess -noprint
于 2013-06-14T12:19:03.023 に答える