単一のライン出力を区切り文字で複数のラインに分割する必要があります;
。入力は、次のようにシェルスクリプトによって生成されます。
REVOKE ALL ON XXXXXX_ABC_AAA FROM PUBLIC ; REVOKE ALL ON XBJE_XXXXX_ABC_AAA FROM PUBLIC ; REVOKE ALL ON XBJE_XXADTXXX_ABC_AAA FROM PUBLIC ; REVOKE ALL ON XBJE_XXVXXX_ABECC_AAA FROM PUBLIC ;
次のように複数行に分割する必要があります。
REVOKE ALL ON XXXXXX_ABC_AAA FROM PUBLIC ;
REVOKE ALL ON XBJE_XXXXX_ABC_AAA FROM PUBLIC ;
REVOKE ALL ON XBJE_XXADTXXX_ABC_AAA FROM PUBLIC ;
REVOKE ALL ON XBJE_XXVXXX_ABECC_AAA FROM PUBLIC ;
どうすればいいですか?
ベストアンサー1
簡単に次のsed
変換を使用できます。;
;\n
$ line="REVOKE ALL ON XXXXXX_ABC_AAA FROM PUBLIC ; REVOKE ALL ON XBJE_XXXXX_ABC_AAA FROM PUBLIC ; REVOKE ALL ON XBJE_XXADTXXX_ABC_AAA FROM PUBLIC ; REVOKE ALL ON XBJE_XXVXXX_ABECC_AAA FROM PUBLIC ;"
$ sed 's/; */;\n/g' <<< "$line"
REVOKE ALL ON XXXXXX_ABC_AAA FROM PUBLIC ;
REVOKE ALL ON XBJE_XXXXX_ABC_AAA FROM PUBLIC ;
REVOKE ALL ON XBJE_XXADTXXX_ABC_AAA FROM PUBLIC ;
REVOKE ALL ON XBJE_XXVXXX_ABECC_AAA FROM PUBLIC ;
したがって、スクリプトが呼び出されたら、foo.sh
次のようにします。
foo.sh | sed 's/;/;\n/g'