shell脚本,如何使用cat casefile | while read line把casefile中删除路径删除,只保留文件名称?
时间: 2024-03-16 13:43:38 浏览: 18
你可以使用`basename`命令来删除路径,只保留文件名称。具体操作如下:
```
cat casefile | while read line
do
filename=$(basename "$line")
echo "$filename"
done
```
上述代码中,`basename`命令会从`$line`中提取出文件名称,然后赋值给变量`$filename`。最后,使用`echo`命令输出文件名称。你可以根据实际需求修改输出的方式,例如将文件名称写入另一个文件中。
相关问题
编写shell脚本并执行。请提交脚本代码以及代码解释,实现读取文件的每一行。提示:cat,while,read
好的,以下是一个简单的 Shell 脚本,可以读取指定文件的每一行,并将每一行打印出来。
```bash
#!/bin/bash
# 读取文件的每一行
# 读取文件名
echo "请输入文件名:"
read filename
# 检查文件是否存在
if [ ! -f $filename ]; then
echo "$filename 不存在"
exit
fi
# 逐行读取文件内容
cat $filename | while read line; do
echo $line
done
```
代码解释:
- `#!/bin/bash`:指定 Shell 解释器类型为 bash。
- `echo "请输入文件名:";read filename`:提示用户输入要读取的文件名,并将用户输入的文件名保存到变量 `filename` 中。
- `if [ ! -f $filename ]; then`:检查用户输入的文件名是否存在,如果不存在,则输出错误信息并退出脚本。
- `cat $filename | while read line; do`:使用 `cat` 命令将文件内容输出到标准输出,并通过管道传递给 `while` 循环。`while` 循环使用 `read` 命令逐行读取管道中的内容,并将每一行保存到变量 `line` 中。
- `echo $line`:打印每一行的内容。
- `done`:`while` 循环结束。
执行该脚本的方式为:在终端中输入 `bash filename.sh`(假设脚本文件名为 `filename.sh`,并且该文件具有可执行权限)。
linux读取文件内容换行,Shell脚本从文件中逐行读取内容的几种方法实例
当我们需要在Linux中读取文件内容时,经常需要考虑换行符的问题。以下是一些Shell脚本从文件中逐行读取内容的方法实例,可以考虑根据具体的需求选择不同的方法:
1. 使用cat和while循环:
```bash
#!/bin/bash
cat file.txt | while read line
do
echo $line
done
```
2. 使用awk:
```bash
#!/bin/bash
awk '{print $0}' file.txt | while read line
do
echo $line
done
```
3. 使用sed:
```bash
#!/bin/bash
sed 's/$/\n/' file.txt | while read line
do
echo $line
done
```
4. 使用IFS:
```bash
#!/bin/bash
IFS=$'\n'
for line in $(cat file.txt)
do
echo $line
done
```
以上是一些从文件中逐行读取内容的方法,使用时根据具体情况选择适合的方法即可。