【发布时间】:2021-03-15 06:30:31
【问题描述】:
我使用的是 macOS 11.0.1。我正在编写一个处理降价文件的 bash 脚本。它必须逐行读取文件(开头的 $HEADER 变量除外)并且:
- 不要编辑以#开头的行
- 为所有其他行添加前缀 (
{{< p ") 和后缀 (" >}})
这是我目前得到的:
while read -r line; do
if [[ "$line" == \#* ]]; then
echo $line >> $OUTPUT
continue
else
sed -E 's/^/{{< p "/; s/$/" >}}/' >> $OUTPUT
fi
done < <(tail -n "+$HEADER" $INPUT)
这是我的输入(没有标题):
## I
Lorem Ipsum is simply dummy text
我希望第一行被忽略,但这是输出:
{{< p "## I" >}}
{{< p "Lorem Ipsum is simply dummy text" >}}
奇怪的是“if”在没有 sed 的情况下也可以工作,因为我可以将匹配的行转发到另一个文件中……如果 sed 行被注释掉了。 做错了什么?
【问题讨论】:
标签: bash macos unix sed markdown