最近遇到导入的csv文件首行为日期,但需要将日期作为列导入到数据库中,直接使用ctl文件好像无法实现,了解到awk这个强大的命令。

导入的CSV文件除了首行为日期,其他的都是格式相同的。需要将首行单独读取出来,获取日期。

首行的格式为:数据日期:2020-06-30

实现方法:var=`(awk 'NR==1{print}' test.csv)`

p_date=`echo $var|awk '{print sbstr($1,11,10)}'`

echo $p_date

打印出2020-06-30

整理:

转:使用awk命令获取文本的某一行,某一列

1、打印文件的第一列(域)                 : awk '{print $1}' filename
2、打印文件的前两列(域)                 : awk '{print $1,$2}' filename
3、打印完第一列,然后打印第二列  : awk '{print $1 $2}' filename
4、打印文本文件的总行数                : awk 'END{print NR}' filename
5、打印文本第一行                          :awk 'NR==1{print}' filename
6、打印文本第二行第一列                :sed -n "2, 1p" filename | awk 'print $1'

基本用法

awk的基本用法就是下面的形式。

# 格式
$ awk 动作 文件名 # 示例
$ awk '{print $0}' demo.txt

上面示例中,demo.txt是awk所要处理的文本文件。前面单引号内部有一个大括号,里面就是每一行的处理动作print $0。其中,print是打印命令,$0代表当前行,因此上面命令的执行结果,就是把每一行原样打印出来。

var=`(awk 'NR==1{print}' test.csv)`

在这个语句中,test.csv是awk要处理的文本,单引号中的NR==1{print}是处理动作,表示打印出文本中的第一行,这样var被赋值为  数据日期:2020-06-30

下面,我们先用标准输入(stdin)演示上面这个例子。

$ echo 'this is a test' | awk '{print $0}'
this is a test

上面代码中,print $0就是把标准输入this is a test,重新打印了一遍。

p_date=`echo $var|awk '{print sbstr($1,11,10)}'`

将var中内容的第一列数据截取,p_date被赋值为 2020-06-30,此处也可用echo $var|awk -F ':' '{ print $2 }'这种方式,但获取的是2020-05-12,,,,,,还需要再处理

awk会根据空格和制表符,将每一行分成若干字段,依次用$1、$2、$3代表第一个字段、第二个字段、第三个字段等等。

>$ echo 'this is a test' | awk '{print $3}'
a

上面代码中,$3代表this is a test的第三个字段a。

下面,为了便于举例,我们把/etc/passwd文件保存成demo.txt。

>root:x:0:0:root:/root:/usr/bin/zsh
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync

这个文件的字段分隔符是冒号(:),所以要用-F参数指定分隔符为冒号。然后,才能提取到它的第一个字段。

>$ awk -F ':' '{ print $1 }' demo.txt
root
daemon
bin
sys
sync

转自https://www.cnblogs.com/linuxprobe/p/10037122.html

awk的基本用法的更多相关文章

  1. awk 的一些用法

    awk,我觉得是Linux里面处理文本最精妙的命令,它是一个行处理的命令,它最初级的用法是:给定一些简单的pattern,然后按照这个pattern 去搜索匹配的行.它的高级用法是用awk来编程,除了 ...

  2. Shellz中awk的简单用法

    其实shell脚本的功能常常被低估.在实际应用中awk sed 等用法可以为shell提供更为强大的功能.下面我们将一下awk调用的简单方法进行了总结.方便同学们学习: awk的简单用法: 第一种调用 ...

  3. AWK命令的用法

    1.awk命令简介: awk是一种可以处理数据.产生格式化报表的语言,功能十分强大. awk的工作方式是读取数据,将每一行数据视为一条记录(record)每笔记录以字段分隔符分成若干字段,然后输出各个 ...

  4. 测试技能积木-AWK的简要用法

    做测试工作,经常要分析日志,有的时候活儿还很脏很累,比如抽取符合某些pattern的行,重新格式化等等.有的时候,我们需要也创造一些测试用数据文件.基于上述两种原因,在Unix Like 系统上,一些 ...

  5. linux学习:sed与awk与tr用法整理

    流编辑器:sed 语法:sed [-hnV][-e<script>][-f<script文件>][文本文件] 参数: -e<script>或--expression ...

  6. AWK工具的用法

    基本格式 awk '{commands}' filename 或者 stdin | awk '{commands}' 以下,均简写为awk '{commands}'的形式 commands的用法 co ...

  7. sed,grep,awk命令常用法

    查看当天nginx访问日志中2016:03:25到2016:05点passport.mingxiao.com域名访问量最多的url,可以查看网站是否被刷. 法一: sed -n '/2016:03:2 ...

  8. shell中awk printf的用法

    打印输出时,可能需要指定字段间的空格数,从而把列排整齐.在print函数中使用制表符并不能保证得到想要的输出,因此,可以用printf函数来格式化特别的输出. printf函数返回一个带格式的字符串给 ...

  9. awk命令的用法实战

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAn8AAADvCAIAAAAM1SXGAAAgAElEQVR4nO2dz8s125XXHx9oTXMHUZ

随机推荐

  1. IDM使用教程:利用IDM下载百度网盘文件

    IDM是什么 其实我使用IDM下载器只是为了方便网页版百度网盘直接下载大于40M文件而已,大家知道文件过大必须打开客户端才能下载,这点对于我的破电脑感觉很烦躁,每次要等待它慢悠悠打开,然后动用我的超级 ...

  2. matlab与python scipy.signal中 freqs freqz 中w,什么时候是角频率,什么时候是真实的工程中使用的采样频率Hz,如何转化

    matlab与python scipy.signal中的freqs,freqz频率分析函数,输出的w,有时候是角频率,有时候是真实频率,容易搞混,这里对比一下. 0.  精要总结: 1) freqs: ...

  3. Redis源码分析(skiplist)

    源码版本: redis-4.0.1 源码位置: server.h :zskiplistNode和zskiplist的数据结构定义. t_zset.c: 以zsl开头的函数是SkipList相关的操作函 ...

  4. iNeuOS工业互联网操作系统,发布实时存储方式:实时存储、变化存储、定时存储,增加设备振动状态和电能状态监测驱动,v3.6.2

    目       录 1.      概述... 1 2.      平台演示... 2 3.      存储方式... 2 4.      设备状态和用电状态监控驱动... 3 1.   概述 本次升 ...

  5. C++ 函数模板实现原理剖析

    C++ 函数模板实现机制原理剖析 重点 编译器并不是把函数模板处理成能够处理任意类的函数 编译器从函数模板通过具体类型来产生不同的函数 编译器会对函数模板进行两次编译 (1)在声明的位置对模板代码进行 ...

  6. shiro550反序列化分析

    拖了很久的shiro分析 漏洞概述 Apache Shiro <= 1.2.4 版本中,加密的用户信息序列化后存储在Cookie的rememberMe字段中,攻击者可以使用Shiro的AES加密 ...

  7. 【Microsoft Azure 的1024种玩法】五、基于Azure Cloud Shell 一站式创建Linux VM

    [文章简介] Azure Cloud Shell 是一个用于管理 Azure 资源的.可通过浏览器访问的交互式经验证 shell. 它使用户能够灵活选择最适合自己工作方式的 shell 体验,无论是 ...

  8. [atARC080F]Prime Flip

    构造一个数组$b_{i}$(初始为0),对于操作$[l_{i},r_{i}]$,令$b_{l_{i}}$和$b_{r_{i}+1}$值异或1,表示$i$和$i-1$的差值发生改变,最终即要求若干个$b ...

  9. JVM的Xms Xmx PermSize MaxPermSize区别

    Eclipse崩溃,错误提示:MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) sp ...

  10. scanner对象,顺序及选择结构

    scanner对象 基本语法: Scanner s = new Scanner(System.in) 使用next()和nextLine()读取前,使用hasNext()和hasNextLine()来 ...