在 Linux 中将多行转换为单行
在本文中,我们将了解如何使用 Linux 将多行转换为单行。
这是演示文件:
方法 1:使用纯 Bash
让我们使用纯 bash 将多行转换为单行,因为它是默认 shell,请注意 bash shell 不依赖于其他实用程序,因为它仅使用内置命令:
我们使用上面的输入文件作为模板来执行我们想要的操作,即在 Linux 中将多行转换为单行。
Syntax: $ (readarray -t ARRAY < inputfile.txt; IFS=”; echo “${ARRAY[*]}”)
Where:
- The readarray is a Bash built-in command. It was introduced in Bash ver.4. The readarray is used for reading inputs standard input into an array variable: ARRAY.
- The -t option is handy for removing
- The IFS is a special shell variable which ia an abbreviation for Internal Field Separator. Here, we assigned the IFS with a single character, empty or ‘,’ depends on our requirements.
- ${ARRAY[*]} means all elements surrounded in ARRAY variable, by using the echo command, all elements of ARRAY will be printed out which are seperated separated by the IFS variables.
例子:
$ (readarray -t ARRAY < newfile.txt; IFS=''; echo "${ARRAY[*]}")
输出 :
方法二:使用tr命令
tr 是一个命令,可以方便地删除和翻译从标准输入文件中提取的特定字符。
Syntax: $ tr [OPTION] SET1 [SET2]
tr 命令可以通过简单地从文件内容中删除换行符来简单地完成这项工作。
例子:
$ tr -d '\n' ','
输出 :
方法三:使用粘贴命令
粘贴 命令通过输出由指定的每个文件的行组成的行,可以方便地水平连接文件。
Syntax : paste [OPTION]… [FILES]…
paste 命令用于合并属于多个输入文件的行。默认情况下,这种合并操作的执行方式是,第一列中的条目属于第一个文件,第二列中的条目属于第二个文件。 -s 选项可以让它按行合并行。
例子:
$ paste -sd ',' newfile.txt
输出 :
方法四:使用sed命令
Unix 中的sed是流编辑器的缩写,它可以方便地执行不同类型的操作,例如搜索、查找和替换、插入或删除。
Syntax : sed OPTIONS… [SCRIPT] [INPUTFILE…]
在这里,使用 sed one-liner 的格言是:将每一行附加到模式空间中,最后用给定的字符串替换所有换行符。
例子:
$ sed ':a; N; $!ba; s/\n/,/g' newfile.txt
输出 :