次の文字列があります。
%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