写一个shell脚本,把一个文本中的每一行(空格隔开)写到另外一个文本中(逗号隔开)
时间: 2024-01-23 16:02:21 浏览: 32
好的,以下是一个简单的Shell脚本,可以实现你的需求:
```bash
#!/bin/bash
# 读取原始文本的文件名
read -p "请输入原始文本的文件名: " input_file
# 读取输出文本的文件名
read -p "请输入输出文本的文件名: " output_file
# 循环读取每一行,并将空格替换为逗号
while read line
do
new_line=$(echo "$line" | tr ' ' ',')
echo "$new_line" >> "$output_file"
done < "$input_file"
echo "转换完成!"
```
你可以将这段脚本保存为一个文件,比如 `convert.sh`,然后在终端中执行,输入原始文本的文件名和输出文本的文件名,即可完成转换。
相关问题
写一段shell 脚本,取一行文字的第4个字符串
假设你有一个文本文件 `example.txt`,其中有多行文字,每行文字之间以换行符分隔。可以使用以下 Shell 脚本来取每一行文字的第 4 个字符串:
```bash
#!/bin/bash
while read line; do
# 使用 awk 命令取第 4 个字符串并输出
echo $line | awk '{print $4}'
done < example.txt
```
在该脚本中,使用 `while read` 循环逐行读取文本文件 `example.txt` 中的每一行文字,并将其赋值给变量 `line`。然后,使用 awk 命令取变量 `line` 的第 4 个字符串,并使用 `echo` 命令输出。
如果要取的字符串不是空格分隔的,可以使用 `cut` 命令。例如,如果每行文字以逗号分隔,可以使用以下脚本:
```bash
#!/bin/bash
while read line; do
# 使用 cut 命令取第 4 个逗号分隔的字符串并输出
echo $line | cut -d ',' -f 4
done < example.txt
```
在该脚本中,使用 `while read` 循环逐行读取文本文件 `example.txt` 中的每一行文字,并将其赋值给变量 `line`。然后,使用 `cut` 命令取变量 `line` 的第 4 个逗号分隔的字符串,并使用 `echo` 命令输出。`-d ','` 表示指定逗号为分隔符,`-f 4` 表示取第 4 个分隔的字符串。
写一个txt转csv的shell脚本
以下是一个简单的txt转csv的shell脚本:
```bash
#!/bin/bash
# 首先检查参数个数是否正确
if [ $# -ne 1 ]; then
echo "Usage: $0 file.txt"
exit 1
fi
# 检查输入文件是否存在
if [ ! -f "$1" ]; then
echo "File $1 not found!"
exit 1
fi
# 将每行文本以逗号分隔并写入新文件
output="${1%.*}.csv"
while read line; do
echo "${line//,/, }" | tr " " "," >> "$output"
done < "$1"
echo "File converted to $output"
```
使用方法:
```bash
$ bash txt_to_csv.sh file.txt
```
其中 `file.txt` 是要转换的文本文件。脚本会将其转换为同名的 CSV 文件,并将每行文本以逗号分隔。注意,如果文本中本来就有逗号,则脚本会将其替换为空格再转换为逗号,以避免出现格式错误。