文字列から「.sh」スクリプトを抽出し、書式を再指定します。

文字列から「.sh」スクリプトを抽出し、書式を再指定します。

次の文字列があります。

%group1 ALL=(ALL) /ora/crs/oracle/product/crs/bin/gsdctl *,/ora/crs/oracle/product/crs/bin/vipca,/ora/app/oracle/ora/Root.sh,/ora/crs/oracle/product/crs/root.sh,/ora/crs/oracle/product/crs/bin/srvctl *,/ora/app/oracle/product/root.sh

出力は次のようになります。 (.shスクリプトのみ印刷)

/ora/app/oracle/ora/Root.sh    
/ora/crs/oracle/product/crs/root.sh
/ora/app/oracle/product/root.sh

答え1

この例では、コンマが絶対パスを区切るためにのみ使用されるため、この方法も機能します。

grep -o '/[^,]*\.sh' file

答え2

あなたの行がファイルの唯一の行であると仮定すると、file次のようになります。sed

cat file | sed 's/,/\n/g' | sed -n '/\.sh$/ p'

最初のsedコマンドはすべてのコンマを改行に置き換え、2番目のコマンドはで終わるすべての行を印刷します.sh。したがって、次のことなく行うことができますsed

cat file | tr ',' '\n' | grep '\.sh$'

答え3

選択肢はありませんが、sedパス/ファイル名にカンマを含めることができます。

grep -Po "(?<=[, ])[^,]*\.sh(?=,|$)" test

関連情報