bash - 仅当上一行以反斜杠结尾时,如何将多行合并为一行?
问题描述
我有以下文件:
Hi
How \
are \
you\
?
Bye
我想得到这个输出:
Hi
How are you?
Bye
我怎样才能做到这一点?
解决方案
如果省略其选项标志,则在转义换行符上加入行\
正是 shell 命令将执行的操作。read
-r
因此,这是一个读取read
不带-r
标志的输入文件并打印结果的示例:
input.txt
Hi
How \
are \
you\
?
Bye
#!/usr/bin/env sh
# shellcheck disable=SC2162 # Explicitly desired backslash escaping
while IFS= read line || [ -n "$line" ]; do
printf %s\\n "$line"
done <input.txt
实际打印结果:
Hi
How are you?
Bye
Bash 的help read
摘录:
-r
不允许反斜杠转义任何字符
推荐阅读
- jquery - 用于输入日期的 jQuery 掩码函数
- wordpress - 联系表格 7 MailChimp 扩展程序无法正常工作
- c# - 我的触发器对撞机触发,但里面的 if 语句不起作用
- c++ - 在多个时间戳执行函数
- java - Java中的列表内列表
- listview - Flutter 上 Listview 的快照长度
- firebase - 比较firestore中的资源和请求资源
- vue.js - 显示消息取决于 v-on:click in vue
- c++ - How to pass a single row of a 2D vector as a function argument
- javascript - RxJS:限制速率限制的 API 调用