regex - 如何使用 bash 脚本和 sed 将字符串替换为换行符?

标签 regex bash shell unix sed

我有以下输入:

Value1|Value2|Value3|Value4@@ Value5|Value6|Value7|Value8@@ Value9|etc...

在我的 bash 脚本中,我想用换行符替换 @@ 。我用 sed 尝试过各种方法,但我没有任何运气:

line=$(echo ${x} | sed -e $'s/@@ /\\\n/g')

最终我需要将整个输入解析为行和值。也许我做错了。我计划用换行符替换 @@ ,然后通过设置 IFS='|' 循环输入以拆分值。如果有更好的方法请告诉我,我还是 shell 脚本的初学者。

最佳答案

使用纯 BASH 字符串操作:

eol=$'\n'
line="${line//@@ /$eol}"

echo "$line"
Value1|Value2|Value3|Value4
Value5|Value6|Value7|Value8
Value9|etc...

关于regex - 如何使用 bash 脚本和 sed 将字符串替换为换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23522132/

相关文章:

php - 未注释的 html 标记的正则表达式

正则表达式验证端口号

linux - 避免将脚本参数作为文件进行评估 [BASH、LINUX]

bash - 如何同步记录 stderr 和 stdout,但仅将 stderr 打印到屏幕?

python - 从文本文件中检索随机预格式化的文本

c# - .Net Core 正则表达式、命名组、嵌套组、反向引用和惰性限定符

bash - 在命令行上解析 shell 脚本的输入

php - 用于运行 php 脚本的 Bash 脚本

bash - 直接从 CSV 文件计算统计数据

linux - Bourne Shell - 如何识别第一个参数是 ''