如何为文件每行添加首尾字符串后按指定分隔符拼接输出
文本处理实现方案
需求说明
现有input.txt文件共3行,内容依次为hello、cruel、world,需要实现以下处理逻辑:
- 读取文件所有行
- 给每行内容首尾添加预设字符:行首加单引号
',行尾加单引号' - 用分隔符
|把处理后的所有行拼接为单行输出 - 预期输出:
'hello'|'cruel'|'world'
可直接运行的实现代码
方式1:awk单命令实现(兼容性最好,适合绝大多数shell环境)
先定义配置参数,再执行处理逻辑:
# 配置项 BEGIN="'" END="'" DELIMITER="|" # 处理逻辑 awk -v head="$BEGIN" -v tail="$END" -v sep="$DELIMITER" ' { if (NR > 1) printf sep printf "%s%s%s", head, $0, tail } END { print "" } ' input.txt
逻辑说明:逐行遍历文件内容,除第一行外每行前先输出分隔符,再输出包裹了首尾字符的当前行内容,所有内容拼接完成后补一个换行符,符合终端输出习惯。
方式2:sed+paste组合实现(命令更短,适合GNU工具链环境)
# 配置项 BEGIN="'" END="'" DELIMITER="|" # 处理逻辑 sed -e "s/^/$BEGIN/" -e "s/$/$END/" input.txt | paste -sd "$DELIMITER" -
逻辑说明:先用sed给所有行批量添加首尾包裹字符,再通过paste命令的串行拼接功能,用指定分隔符把多行内容合并为单行。
运行结果
以上两种方式执行后,都会输出预期结果:
'hello'|'cruel'|'world'
内容的提问来源于stack exchange,提问作者Saif
相关产品推荐
相关产品推荐

