
你可以按行读入这个文件的内容到变量里,再进行处理,加个计数器就可以只对你想要的行进行处理了:
while read v1 v2 date1 date2 do
# echo $v1 $v2
echo $date1 $date2 >> BBB
……
done < AAA
如果仅要第一行的数据,可以用head读文件头,再用awk处理,结果存到文件BBB:
head -1 AAA | awk '{print $3,$4}' > BBB
自己判断终究比较麻烦,还有润年什么的,2月还不一定是28天。建议从date命令获取某月的天数:
代码修改如下:
#!/bin/bash#$1是4位数年份,$2是两位数月份
#这里用了printf,你可以把它的结果传递给mkdir建立目录
i=0
while [[ `date -d "+$i days $1-$2-01" +%m` -eq $2 ]]
do
let i++
printf "$1年$2月%02g日\n" $i
done
date那句是返回给定的某年、某月的第一天 加上 i 天的日期中 月份的数值。如果还是原来的月份就打印,如果不是输入的月份(说明是下一个月了)就退出。
需求功能:
创建测试用例文件 text :
创建shell脚本:
运行结果:
利用 awk 'END{print NR}' [文件名] 来输出行数:
在shell脚本中添加该功能:
运行结果:
上面的shell文件只是把文件名写死在脚本中,并没有实际使用意义,所以需要编写一个指令来指定需要读取的文件,就像 vim [文件名] 一样
“$1” 代表第1个参数,也就是在 read 之后紧跟的参数,将其作为文件名传入:
将脚本移动至环境变量对应的目录中:(可以自己更改 /bin/xxx 来决定运行命令的名称,但注意不能重复)
sudo mv read /bin/read
然后添加运行权限:
sudo chmod 755 /bin/read
打开终端的目录可以是任何位置,通过以下命令即可运行shell脚本:
sudo read [文件路径]
同理,我们还可以自己为复杂指令编写shell脚本,来提高命令的使用效率,例如开关ss服务,打开锐捷客户端认证等等。
#/bin/sh
function tmp_fun()
{
echo "press Enter to continue or other key to exit"
read -n 1 _tmp_key
echo "$tmp_key"
if [ "$_tmp_key" != "^@" ]; then #这里的^@是以ctrl+v,ctrl+Enter打印的,中间ctrl不放
exit 0
else
cd a #这里是a文件夹,具体路径自己写
vi `find -name "texttxt" -printf "%AD %AT %f\n"|sort|tail -1|cut -d " " -f3` #这里用时vi打开的。
fi
}
#statement 这里是你前一段命令,可以在这里自己加判断执行后面的
tmp_fun
#说明:没加错误处理。
find / -ctime 0 -exec grep -H "a=000000" {} \; | cut -d: -f1 | uniq -c
atime: 在文件被读、写、truncate、mknod、utime时更改atime
mtime: 在文件被mknod、utime更改和写入时 更改mtime
ctime:文件i-node最近一次修改的时间
以上就是关于linux bash shell中如何读取文件全部的内容,包括:linux bash shell中如何读取文件、shell问题,如何按照想法创建多个以日期为名的文件夹、在Ubuntu下编写shell脚本读取文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)