shell怎么将txt文档中所有行移到同一行,并用空格分隔
时间: 2023-12-14 21:37:18 浏览: 37
可以使用`tr`和`echo`命令来实现。
假设我们有一个名为`text.txt`的文本文件,其中每行都有一些文本。我们需要将所有行移到同一行,并用空格分隔它们。
可以使用以下命令:
```
echo $(tr '\n' ' ' < text.txt)
```
这个命令会将`text.txt`中的所有行连接成一个单独的行,并用空格分隔它们。输出将打印在终端上。
如果你想将输出保存到一个新文件中,可以使用重定向符号`>`,像这样:
```
echo $(tr '\n' ' ' < text.txt) > new_text.txt
```
这将把所有行连接成一个单独的行,并将输出保存到`new_text.txt`文件中。
相关问题
shell怎么将txt文档中所有行移到同一行,并用空格分隔,写到旧文件中
可以使用 `tr` 和 `echo` 命令实现这个功能。具体步骤如下:
1. 使用 `tr` 命令将每行结尾的换行符替换为空格,将多行合并成一行:
```
tr '\n' ' ' < input.txt
```
其中,`input.txt` 是输入文件的文件名。
2. 使用 `echo` 命令将合并后的内容写回原文件:
```
echo "$(tr '\n' ' ' < input.txt)" > input.txt
```
这个命令会将 `tr` 命令的输出结果作为参数传给 `echo` 命令,然后将结果重新写回原文件。
完整的 shell 脚本如下:
```bash
#!/bin/bash
# 将每行结尾的换行符替换为空格,将多行合并成一行
tr '\n' ' ' < input.txt > temp.txt
# 将合并后的内容写回原文件
echo "$(cat temp.txt)" > input.txt
# 删除临时文件
rm temp.txt
```
其中,`input.txt` 是输入文件的文件名,`temp.txt` 是临时文件的文件名。在脚本执行结束后,会删除临时文件。
shell怎么将txt文档中每一行移到同一行,并用空格分隔
可以使用`awk`命令来实现:
```
awk '{ printf("%s ", $0) } END { printf("\n") }' input.txt > output.txt
```
其中,`input.txt`是原始文本文件,`output.txt`是处理后的文件。
解释一下这个命令:
- `awk`是一个文本处理工具,可以按行处理文本;
- `{ printf("%s ", $0) }`是处理每一行的命令,它会将当前行的内容输出,并在末尾加上一个空格;
- `END { printf("\n") }`是在处理完所有行之后执行的命令,它会在输出的末尾加上一个换行符。
这样,就可以将每一行移到同一行,并用空格分隔了。