【发布时间】:2019-06-24 20:01:36
【问题描述】:
我正在尝试使用 sed 将文本中的固定解析(“replaceMe”)替换为多行文本。 我的 bash 脚本如下:
content=$(awk'{print $5}' < data.txt | sort | uniq)
target=$(cat install.sh)
text=$(sed "s/replaceMe/$content/" <<< "$target")
echo "${text}"
如果内容仅包含一行,则替换有效,但如果它包含 sevrel 行,我会得到:
sed:... untarminated `s' command
我阅读了有关“获取”多行内容的信息,但找不到有关放置多行字符串的信息
【问题讨论】:
-
sed用换行符终止命令。 sed 不能可靠地使用多行。 -
awk'{print $5}' < data.txt | sort | uniq- 您真的需要对该输入进行排序还是只是想获取唯一值但顺序无关紧要? -
@EdMorton 订单无关紧要...我在某处读到您应该在“uniq”之前“排序”
-
是的
uniq仅适用于连续的相同值,例如您从排序输入中获得的值,但sort | uniq仅相当于sort -u并且您不需要获取唯一值当您使用 awk 时(例如,awk '!seen[$0]++' file单独输出来自file的唯一值)这就是我问的原因。