shell脚本如何依次读取文本每行最后一个:后面的文本,并把读取的内容赋值变量
时间: 2024-02-23 12:58:08 浏览: 90
可以使用shell脚本中的while循环和sed命令来实现这个功能。具体步骤如下:
1. 打开文本文件
```bash
file="filename.txt"
```
2. 逐行读取文本内容
```bash
while read line
do
# 对每一行进行处理
done < "$file"
```
3. 在每行中找到最后一个冒号“:”的位置,并截取冒号后面的文本
```bash
index=$(echo "$line" | sed 's/.*:\(.*\)/\1/') # 找到最后一个冒号的位置,并截取冒号后面的文本
content=$(echo "$index" | sed 's/^[ \t]*//;s/[ \t]*$//') # 去掉文本两端的空格
```
4. 将截取到的内容赋值给变量
```bash
variable="$content"
```
完整代码如下:
```bash
file="filename.txt"
while read line
do
index=$(echo "$line" | sed 's/.*:\(.*\)/\1/')
content=$(echo "$index" | sed 's/^[ \t]*//;s/[ \t]*$//')
variable="$content"
# 对变量进行处理
echo "$variable"
done < "$file"
```
相关问题
shell脚本如何依次读取文本每行最后一个/后面的文本,并把读取的内容赋值变量
可以使用awk命令来实现这个功能。具体步骤如下:
1. 打开文本文件
```bash
file="filename.txt"
```
2. 使用awk命令逐行读取文本内容,并截取冒号后面的文本
```bash
awk -F ":" '{print $NF}' "$file" | while read content
do
# 去掉文本两端的空格
variable=$(echo "$content" | awk '{$1=$1};1')
# 对变量进行处理
echo "$variable"
done
```
完整代码如下:
```bash
file="filename.txt"
awk -F ":" '{print $NF}' "$file" | while read content
do
variable=$(echo "$content" | awk '{$1=$1};1')
# 对变量进行处理
echo "$variable"
done
```
其中,awk命令的-F参数指定了分隔符为冒号“:”,$NF表示最后一个字段,即冒号后面的文本。使用while循环逐行读取每个冒号后面的文本,并使用echo和awk命令去掉文本两端的空格,最后将内容赋值给变量进行处理。
写一个shell脚本 读取一个文本文件 每一行赋值给变量
#!/bin/bash
# 读取文件名
read -p "请输入文件名:" filename
# 判断文件是否存在
if [ ! -f "$filename" ]; then
echo "文件不存在!"
exit 1
fi
# 逐行读取文件内容,并赋值给变量
while read line; do
var="$line"
echo "变量值为:$var"
done < "$filename"
阅读全文