我有一个可变长度的字符串,如下所示:
-DFOO -DBAR="1 2 3" -DTEST="\"asdf asdf\""
我想分成几行,使用空格作为分隔符(除非它们出现在引号中)。
该示例的预期结果是:
-DFOO
-DBAR="1 2 3"
-DTEST="\"asdf asdf\""
如何使用“普通”unix工具执行此操作。我尝试使用AWK,但没有任何运气,大多数使用AWK解决此问题的参考都有固定数量的参数。
答案 0 :(得分:2)
你想要"normal" unix tool.
:
<强> AWK 强>:
awk -F' -' -v OFS='\n-' '$1=$1'
测试
kent$ echo '-DFOO -DBAR="1 2 3" -DTEST="\"asdf asdf\""'|awk -F' -' -v OFS='\n-' '$1=$1'
-DFOO
-DBAR="1 2 3"
-DTEST="\"asdf asdf\""
<强> SED 强>
kent$ sed 's/ -/\n-/g' <<< '-DFOO -DBAR="1 2 3" -DTEST="\"asdf asdf\""'
-DFOO
-DBAR="1 2 3"
-DTEST="\"asdf asdf\""
或 grep
kent$ echo '-DFOO -DBAR="1 2 3" -DTEST="\"asdf asdf\""'|grep -oP -e'-[^-]*'
-DFOO
-DBAR="1 2 3"
-DTEST="\"asdf asdf\""