首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想用\n分隔文件的内容,并在元素中放置+

我想用\n分隔文件的内容,并在元素中放置+
EN

Stack Overflow用户
提问于 2021-03-06 11:11:36
回答 4查看 59关注 0票数 0

我用的是bash。我需要处理一个字符串,但这是相当棘手的。

这个文件包含这样的文件列表(只是一个例子):

代码语言:javascript
复制
apple.o
orange.bin
banana.o
kiwi.o

我希望将该文件的内容转换为如下所示的字符串:

代码语言:javascript
复制
apple.o+orange.bin+banana.o+kiwi.o

我想用\n分隔文件的内容,并将+放在元素中。

这似乎是个愚蠢的问题。但是我是新手,对此我没有太多的经验。我真的不知道这事。

但是,我认为如果在for循环中正确使用if语句是可能的。

简单的伪代码(可能有一些问题):

代码语言:javascript
复制
for line in 0..number_of_line:
     if line notequal number_of_line:
        put content[line] with "+" into result
     else:
        put content[line] into result

我很感谢你的帮助。谢谢。

EN

回答 4

Stack Overflow用户

发布于 2021-03-06 11:23:48

bash

代码语言:javascript
复制
str=$(< file)       # Slurp the file into the variable `str`
str=${str%$'\n'}    # Remove the last character if it is a newline
str=${str//$'\n'/+} # Replace all newlines with `+`
echo "$str"         # Print the variable to see its contents
票数 0
EN

Stack Overflow用户

发布于 2021-03-06 11:40:52

一个以文件名作为参数并返回已连接文件的bash函数:

代码语言:javascript
复制
slurpfile() {
    local IFS=+
    mapfile -t lines < "$1"
    printf "%s" "${lines[*]}"
}

示例用法:

代码语言:javascript
复制
combined=$(slurpfile input.txt)
printf "%s\n" "$combined"

它只是将文件读入一个数组中,每个元素一行,然后将它们与正确的元素之间的IFS分隔符连接起来。

票数 0
EN

Stack Overflow用户

发布于 2021-03-06 11:42:25

通常,我使用awk来解析文本,因为它更快、更可移植。

在一行中打印所有行,并在每行中添加+

代码语言:javascript
复制
awk 'BEGIN{ORS="+"}1' file.txt

要删除最后一次出现的+,请执行以下操作:

代码语言:javascript
复制
sed 's/\(.*\)+/\1/'

单行版本:

代码语言:javascript
复制
awk 'BEGIN{ORS="+"}1' file.txt | sed 's/\(.*\)+/\1/'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66505027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档