【Linux学习记录 D:01】——使用paste、seq、date、awk等命令生成进度表

简介

课堂上教学的进度表入门案例,简单记录

最终效果

在这里插入图片描述

总体思路

将每一列拆分开来生成单独的文件,最后使用paste以及awk命令合并美化。web

过程记录

生成第一列序号列

seq 15 > lie1 | cat lie1

在这里插入图片描述

生成时间段1

seq 0 14 | xargs -i date -d "20200224 + {}weeks" +%Y.%m.%d > lie2.1

在这里插入图片描述

生成时间段2

seq 0 14 | xargs -i date -d "20200224 + {}weeks + 4days" +%Y.%m.%d > lie2.2

在这里插入图片描述

本身定义同列数的内容做为第4列

在这里插入图片描述

使用paste进行列的合并

paste * 能够对当前目录的全部文件进行以列对列的方式合并
也能够指定文件合并
如:paste file testfile testfile1 #合并指定文件的内容shell

paste *

在这里插入图片描述

使用awk进行时间段的合并

AWK是一种处理文本文件的语言,是一个强大的文本分析工具。
使用awk上文中的进度表每一列,awk会用$一、$2…进行区分svg

paste * | awk '{print $1"\t"$2"-"$3"\t"$4}'

在这里插入图片描述

实验扩展

简介

写一个脚本实现输入li4文件名以及起始日期输出简单进度表工具

过程

#只须要在/home/mode2/目录下建立li4文件名
#并将li4 起始日期分别做为 第一 第二参数传入便可简单生成进度表
#应该还能够扩展,不会了

fileName=$1
# wc -l 用来只显示行数
#使用$()来将Linux命令输出的值赋予变量
total=$(cat /home/mode2/${fileName} | wc -l)
startdata=$2

#建立序号列
seq $total > /home/mode2/li1
#建立时间段1
seq 0 `expr ${total} - 1` | xargs -i date -d "${startdata} + {}weeks" +%Y.%m.%d > /home/mode2/li2
#建立时间段2
seq 0 `expr ${total} - 1` | xargs -i date -d "${startdata} + {}weeks + 4days" +%Y.%m.%d > /home/mode2/li3

#进行列合并,输出不保存,保存没写
paste /home/mode2/li1 /home/mode2/li2 /home/mode2/li3 /home/mode2/${fileName} | awk '{print $1"\t"$2"-"$3"\t"$4}'

在这里插入图片描述

扩展知识点总结

  • $(Linux命令) :能够将输出做为变量
  • wc -l :用来只显示行数
  • expr ` 数值 运算符 数值` :用来进行算数运算 运算符左右需有空格