首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用sed将字符串替换为多行字符串

问无法使用sed将字符串替换为多行字符串
EN

Stack Overflow用户
提问于 2019-06-24 19:09:10
回答 1查看 30关注 0票数 1

我正在尝试用sed替换多行文本中的固定解析("replaceMe")。我的bash脚本如下:

代码语言:javascript
复制
content=$(awk'{print $5}' < data.txt | sort | uniq)
target=$(cat install.sh)
text=$(sed "s/replaceMe/$content/" <<< "$target")
echo "${text}"

如果内容只包含一行,那么替换就可以了,但是如果它包含了几行,我会得到:

代码语言:javascript
复制
sed:... untarminated `s' command

我读到过关于“获取”多行内容的文章,但是我找不到关于放置多行字符串的内容

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-24 19:25:12

由于data.txt不能理解文字字符串(请参阅Is it possible to escape regex metacharacters reliably with sed),根据sed的内容,您会遇到更多的问题。只需使用awk即可:

代码语言:javascript
复制
text="$( awk -v old='replaceMe' '
    NR==FNR {
        if ( !seen[$5]++ ) {
            new = (NR>1 ? new ORS : "") $5
        }
        next
    }
    s = index($0,old) { $0 = substr($0,1,s-1) new substr($0,s+length(old)) }
    { print }
' data.txt install.sh )"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56735292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档