Kev*_*ter 12 unix bash shell sed
我有以下输入:
Value1|Value2|Value3|Value4@@ Value5|Value6|Value7|Value8@@ Value9|etc...
Run Code Online (Sandbox Code Playgroud)
在我的bash脚本中,我想@@ 用换行符替换它.我用sed尝试了各种各样的东西,但我没有运气:
line=$(echo ${x} | sed -e $'s/@@ /\\\n/g')
Run Code Online (Sandbox Code Playgroud)
最终,我需要将整个输入解析为行和值.也许我错了.我打算@@ 用换行替换换行符,然后通过设置循环输入IFS='|'以分割值.如果有更好的方法请告诉我,我仍然是shell脚本的初学者.
我建议使用tr函数
echo "$line" | tr '@@' '\n'
Run Code Online (Sandbox Code Playgroud)
例如:
[itzhaki@local ~]$ X="Value1|Value2|Value3|Value4@@ Value5|Value6|Value7|Value8@@"
[itzhaki@local ~]$ X=`echo "$X" | tr '@@' '\n'`
[itzhaki@local ~]$ echo "$X"
Value1|Value2|Value3|Value4
Value5|Value6|Value7|Value8
Run Code Online (Sandbox Code Playgroud)
使用纯BASH字符串操作:
eol=$'\n'
line="${line//@@ /$eol}"
echo "$line"
Value1|Value2|Value3|Value4
Value5|Value6|Value7|Value8
Value9|etc...
Run Code Online (Sandbox Code Playgroud)