我正在尝试用sed替换多行文本中的固定解析("replaceMe")。我的bash脚本如下:
content=$(awk'{print $5}' < data.txt | sort | uniq)
target=$(cat install.sh)
text=$(sed "s/replaceMe/$content/" <<< "$target")
echo "${text}"如果内容只包含一行,那么替换就可以了,但是如果它包含了几行,我会得到:
sed:... untarminated `s' command我读到过关于“获取”多行内容的文章,但是我找不到关于放置多行字符串的内容
发布于 2019-06-24 19:25:12
由于data.txt不能理解文字字符串(请参阅Is it possible to escape regex metacharacters reliably with sed),根据sed的内容,您会遇到更多的问题。只需使用awk即可:
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 )"https://stackoverflow.com/questions/56735292
复制相似问题