多行文本转成一行的实现方法

多行,文本,转成,一行,实现,方法 · 浏览次数 : 365

小编点评

**方法一:使用 tr 命令** ```bash cat <<EOF | tr '\' ','192.168.0.1192.168.0.2192.168.0.3192.168.0.4192.168.0.5192.168.0.6EOF ``` **方法二:使用 sed 命令** ```bash sed -e 's/\r/,/g' file_name.txt ``` **使用方法的比较** * **tr 命令**更简单易读,但它需要使用管道符将多个字符串连接起来。 * **sed 命令**更灵活,可以处理更复杂的文本格式,例如包含换行符的文本。 **建议** * 在使用方法时,请确保将文件或文本文件名作为 `file_name.txt` 的路径替换到命令中。 * 方法一可能需要安装 `tr` 命令,而方法二则需要安装 `sed` 命令。

正文

哈喽大家好,我是咸鱼

不知道你们有没有遇到过下面的情况,以我为例

有时候我会收到批量操作服务器的需求,且我会拿到一个服务器 ip 列表,它是一个多行的形式,如下所示

# ip 列表
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6

但我使用 saltstack 进行批量操作时,我需要将上面的多行 ip 转成一行的形式才能执行 saltstack 命令

192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4,192.168.0.5,192.168.0.6

# saltstack 批量操作命令例子 
salt -L '192.168.0.1,192.168.0.2,192.168.0.3,192.168.0.4,192.168.0.5,192.168.0.6' cmd.run 'ls -l'

如果是少量 ip,直接手动操作就行;如果 ip 数量特别多,手动转换的话就特别的麻烦了

下面我将介绍两个比较常见的多行文本转一行的实现方法,如果大家有更好的方法的话,欢迎大家积极讨论参与!

shell 命令实现

tr 命令

tr 命令用于转换或删除文本中的字符,我们可以通过 tr --help 来查看它的帮助文档

下面是一些关于 tr 命令的例子

#替换字符
echo "hello" | tr 'o' 'a'   # 输出结果:hella

#删除字符
echo "hello" | tr -d 'l'   # 输出结果:heo

#压缩连续字符:
echo "hello" | tr -s 'l'   # 输出结果:helo

知道了这个命令的大概用法之后,我们就可以通过 tr 命令来实现多行转一行

#命令如下:
cat <<EOF | tr '\n' ','
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6
EOF

上面的命令可以分为两个部分,第一部分如下:

#第一部分
cat <<EOF 
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6
EOF
  • 使用 cat 命令和 <<EOF 结构,它指示将下面的文本内容作为输入传递给 cat 命令
  • EOF:终止符,用于标识输入的结束

EOF在Linux中是一种约定的标记,用于指示输入的结束,它在不同的上下文中有不同的用途

在Here Document结构中,EOF用于标记输入文本的开始和结束;在文件输入中,EOF用于表示输入的结束

有关 Here Document 内容:Here Document and Here String | Baeldung on Linux

上面命令输出如下:
image

接下来我们来看第二部分

#第二部分
tr '\n' ','

使用 tr 命令,它将 '\n' (换行符)替换为逗号 ','tr 命令用于字符转换,'\n' 是被替换的字符,',' 是替换的字符

第一部分和第二部分通过管道符 | 连接起来,表示将 cat 命令的输出传递给 tr 命令处理

我们来看下输出结果
image

Notepad++ 实现

这个方法适用于在 Windows 系统,用 Notepad 实现

把多行 IP 复制到 Notepad 中,然后选中内容——>输入查找目标和替换内容——>点击全部替换(注意下面的查找模式换成正则表达式)

image

  • \r\n 表示换行符,(.+) 表示匹配任意字符,且至少匹配一次
  • \1 表示引用查找到的文本,, 表示逗号

需要注意的是,替换换行符之前你得先知道文本内容中的换行符是 Windows 格式(\r\n) 还是 UNIX 格式(\n

image

与多行文本转成一行的实现方法相似的内容:

多行文本转成一行的实现方法

哈喽大家好,我是咸鱼 不知道你们有没有遇到过下面的情况,以我为例 有时候我会收到批量操作服务器的需求,且我会拿到一个服务器 ip 列表,它是一个多行的形式,如下所示 ```bash # ip 列表 192.168.0.1 192.168.0.2 192.168.0.3 192.168.0.4 192

[转帖]shell脚本实现文本内容比较交互程序

背景介绍 脚本基于Comm命令进行功能封装,考虑到命令执行前需要对文本进行排序,并且在多文件需要比较内容时可能会导致多个文本混乱,因此使用Shell封装成了一个交互式程序,快速对文件内容进行判断和输出想要的内容内容结果。 脚本介绍 文件内容校验(是否一致内容)定制化输出文本(1.仅文本单独出现内容;

[转帖]详细解释cp、cpio、createrepo、createdb命令的用法。

以下为你详细解释cp、cpio、createrepo、createdb命令的用法。 Linux cp命令的用法及解释 Linux cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件

proto转java类时相关option配置

转载请注明出处: option java_multiple_files = true; 作用和意义:此选项指示生成的 Java 代码将被分割成多个文件而不是一个文件。每个消息类型都会生成一个单独的 Java 类文件。 示例:如果有两个消息类型:MessageA 和 MessageB,则生成的 Jav

【转帖】Dockerfile文件指令介绍

https://blog.whsir.com/post-5327.html Dockerfile其实就是一个文本文件,这个文本文件名称叫Dockerfile,里面包含了一些指令(可以理解成多个指令集合成了一个脚本来构建docker镜像),然后通过docker build来构建这个Dockerfile

[转帖]Bash EOF 技巧

Bash EOF 技巧 文章目录 Bash EOF 技巧1. 命令行输出2. 写入文本3. 追加文本4. 覆盖文本5. 自定义 EOF6. 另一种格式7. 示例7.1 配置文件7.2 新建分区并挂载7.3 设置变量7.4 输出脚本7.5 匹配输出7.6 json 文本 EOF适用场景: 命令行多行输

VALL-EX下载介绍:只需3秒录音,即可克隆你的声音

VALL-EX是一个强大和创新的多语言文本转语音模型,支持对中文、英文和日语的语音进行合成和克隆,使用者只需上传一段3-10秒的录音,就可以生成高质量的目标音频,同时保留了说话人的声音、情感和声学环境 VALL-EX的应用范围非常广泛,可以用于跨语言文本到语音、语音合成和语音到语音翻译等各种任务,无

Windows 11 内核新调试器「GitHub 热点速览 v.23.01」

本周热点趋势榜虽然新项目不多,但是还是有几个不错值得收藏的工具项目,比如用来做文本转语音的 tortoise-tts 能生成更加贴近真实人声的语音,让 Go

[转帖]010 Linux 文本统计与去重 (wc 和 uniq)

https://my.oschina.net/u/3113381/blog/5427461 wc 命令一般是作为组合命令的一员与其他命令一同起到统计的作用。而一般情况下使用 wc -l 命令较多。 uniq 可检查文本文件中重复出现的行,一般与 sort 命令结合使用。一起组合搭配使用完成统计、排序

[转帖]Linux中的Grep命令(在文件中查找文本)

[日期:2020-05-14] 来源:Linux公社 作者:醉落红尘 [字体:大 中 小] grep命令是(global regular expression print,全局正则表达式输出)的缩写,它是Linux中功能最强大且最常用的命令之一。 grep在一个或多个输入文件中搜索与给定模式匹配的行