shell 如何文本中的多行放置一行,以|分割
时间: 2024-12-02 07:13:38 浏览: 20
在Shell脚本中,如果你想把文本文件中的多行数据合并成单行并以竖线(|)分隔,可以使用`tr`、`paste`或者`awk`等命令。这里给出几种方法:
1. **使用`tr`**:
```sh
tr '\n' '|' < input.txt > output.txt
```
这里,`'\n'`是换行符的转义表示,`< input.txt`读取输入文件内容,然后`>`将其替换为新的行格式,即每行之间用'|'分隔。
2. **使用`paste`** (假设输入文件只有一个字段):
```sh
paste -d '|' < input.txt
```
`-d` 参数指定分隔符,这里是`'|'`。这个命令会按行读取文件,并直接输出结果,没有输出文件。
3. **使用`awk`**:
```sh
awk 'ORS="|" {print}' input.txt
```
`ORS` 是输出记录分隔符,这里设置为`'|'`。`{print}` 会打印每一行的内容。
4. 如果文件很大,为了节省内存,可以逐行处理:
```sh
while read -r line; do echo "$line"|tr '\n' '|'; done < input.txt | tr '\n' ''
```
使用`read`逐行读取,然后使用`tr`转换每行。
阅读全文