精华内容
下载资源
问答
  • AWK截取字符串

    2012-09-18 23:09:35
    AWK截取字符串文件file的每一行的格式如下:600001 200712 SH 20080413希望吧格式调整为:600001 2007 12 2008 04 13可以实用以下shell命令:cat file ...

    AWK截取字符串

    文件file的每一行的格式如下:

    600001  200712  SH  20080413

    希望吧格式调整为:

    600001  2007  12  2008  04  13

    可以实用以下shell命令:

    cat file | awk '{print $1 "\t" substr($2,1,4) "\t" substr($2,5,2) "\t" substr($4,1,4) "\t"  substr($4,5,2) "\t" substr($4,7,2)}' > newfile

     Awk substr function

    Let's look at the substr function of awk.
    This function has the form substr(s, a, b) and returns b number of chars from string s, starting at position a.  The parameterb is optional.
     Assume that we have a one line file called temp:
     Every good boy.
     Then, here are some substr examples:
     nawk '{print substr($1,1,1)}' temp   returns E
    nawk '{print substr($1,3)}' temp   returns ery
    nawk '{print substr($2,3)}' temp   returns od
    nawk '{print substr($0,7,2)}' temp  returns go
    分类: linux shell

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27042095/viewspace-743984/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/27042095/viewspace-743984/

    展开全文
  • awk截取字符串

    2019-09-14 21:41:55
    分隔字符串分三种情况,一种是分隔符是空格,一种是非空格,还有一种是多个字符作为分隔符 先来创建一个文件吧: Nam Chinese Math English Tom 80 90 100 Jack 83 ...

    分隔字符串分三种情况,一种是分隔符是空格,一种是非空格,还有一种是多个字符作为分隔符

    先来创建一个文件吧:

    Nam   Chinese     Math       English
    Tom      80        90           100
    Jack     83        88           90
    Lilei    84        80           88
    注意:这个文件是用空格分隔的,所以字段之间的空格数目不一样

    我们想要查看每个人的English成绩,则可以用

    awk '{print $1 "\t" $4}' student.txt




    可以看到,最后全部列出了所有人的English成绩,由此可见,在使用空格分隔是,连续的空格会当做一个分隔符来处理,那么对于别的分隔符呢?我们来看看

    首先来看看指定分隔符的用法:

    将文件修改成用:分隔

    Nam:Chinese:Math:English
    Tom:80:90:100
    Jack:83:88:90
    Lilei:84:80:88

    然后执行

    awk -F ':' '{print $1"\t"$4}' student.txt

    可见,和上面输出是一样的,所以可以通过 -F来指定分隔符,除此之外,FS也可以指定分隔

    awk '{FS=":"} {print $1 "\t" $4}' student.txt
    输出结果:


    成绩是输出了,但是名字好像没有被分隔,事实上,awk的用法是 awk '条件1{动作1} 条件2{动作2}'  文件名,但是在执行这些动作的时候已经把行读取了,所以应该在读取之前就指定分隔符,所以用BEGIN

    awk 'BEGIN {FS=":"} {print $1 "\t" $4}' student.txt


    最后结果也一样,所以说在指定分隔符的时候可以用-F也可以用FS,需要注意的是用FS时要加上BEGIN。好了,回到前面,当有多个非空格分隔符呢?来试试,把文件修改成如下:

    Nam::Chinese::Math::English
    Tom::80::90::100
    Jack::83::88::90
    Lilei::84::80::88


    然后执行

    awk -F ':' '{print $1 "\t" $4}' student.txt


    可以看到,并没有输出我们想要的结果!

    那就是试试::

    awk -F '::' '{print $1 "\t" $4}' student.txt


    这次得到了想要的输出,由此可见,在只用空格作为分隔符是,中间的多个空格都会当做一个分隔来处理,当使用别的空格符是,指定几个分隔符就按几个来分隔。

    所以这里我们可以使用简单的正则来处理:

    正则中 * 表示前面的字符出现任意次(包含0),所以在有多个分隔符时我们可以用*开匹配:

    awk -F ':*' '{print $1 "\t" $4}' student.txt
    这就是说分隔符是 : 或是 :: 或是 ::: 或是::::等等

    最后得到了正确的输出

    既然可以用正则,那就可以使用多个不同的分隔符,将文件改成如下:

    Nam:/Chinese:;Math<>>>>English
    Tom/80/90::100
    Jack/83/88<>90
    Lilei::84::80<<<88

    然后执行

    awk -F '[:/;<>]*' '{print $1 "\t" $4}' student.txt

    好吧,很黄很暴力,但结果确实是正确的!


    除此之外,awk还可以用substr来截取字符串,如下截取日期:

    #!/usr/bin/bash
    
    date=`date +%Y%m%d`
    
    year=`echo $date | awk '{print substr($date, 0, 4)}'`
    month=`echo $date | awk '{print substr($0, 5, 2)}'`
    day=`echo $date | awk '{print substr($date, 7, 2)} '`
    echo $date
    echo $year
    echo $month
    echo $day

    这里有用到了两个函数,date和awk substr,date用来获取日期,其余的用法还有

    获取明天的日期
    date -d next-day +%Y%m%d

    获取昨天的日期
    date -d last-day +%Y%m%d

    获取上个月的年和月
    date -d last-month +%Y%m

    获取下个月的年和月
    date -d next-month +%Y%m

    获取明年的年份
    date -d next-year +%Y

    在获取非当前日期时需要加上-d参数,另外还可以指定时分秒

    比如:echo `date +%Y%m%d-%H:%M:%S`,在格式化日期的时候只有月和日是小写,其余都是大写。

    awk中常用的函数:



    版权声明:本文为博主原创文章,未经博主允许不得转载。

    转载于:https://my.oschina.net/meiqizhang/blog/524541

    展开全文
  • awk 截取字符串

    2015-08-15 15:24:00
    1.把字符串的变量存入到其他变量中 1.1.编辑 shell 文件 [root@m910-120 test]# vi awkTest.sh ips=10.0.204.217:10.0.204.218 var1=`echo $ips|awk -F ':' '{print $1}'` var2=`echo $ips|awk -F ':' '{print...

    1.把字符串的变量存入到其他变量中

    1.1.编辑 shell 文件
    [root@m910-120 test]# vi awkTest.sh

    ips=10.0.204.217:10.0.204.218
    var1=`echo $ips|awk -F ':' '{print $1}'`
    var2=`echo $ips|awk -F ':' '{print $2}'`

    echo "awk 处理后结果:"
    echo $var1
    echo $var2

    1.2.测试

    awk 处理后结果:
    10.0.204.217
    10.0.204.218

     

    转自:http://m.blog.csdn.net/blog/tengdazhang770960436/14001385

    转载于:https://www.cnblogs.com/nizuimeiabc1/p/4732517.html

    展开全文
  • Linux cut/awk截取字符串

    2020-12-11 16:40:13
    截取1-3字符串 echo 123456789 | cut -b 1-3 输出123 截取4-末尾字符串 echo 123456789 | cut -b 4- 输出456789 按指定字符-截取第2个字符串 echo 123-456-789 | cut -d '-' -f 2 输出456 awk 按指定字符-截取第2...
    cut
    • 截取1-3字符串
      echo 123456789 | cut -b 1-3
      输出123
    • 截取4-末尾字符串
      echo 123456789 | cut -b 4-
      输出456789
    • 按指定字符-截取第2个字符串
      echo 123-456-789 | cut -d '-' -f 2
      输出456
    awk
    • 按指定字符-截取第2个字符串
      echo 123-456-789 | awk -F '-' '{print $2}'
      输出456
    • 格式化输出字符串
      echo 123-456-789 | awk -F '-' '{print "test"$2}'
      输出test456
    展开全文
  • Shell处理程序的时候,经常会涉及到很多与字符...1) 字符串操作(长度、读取、替换)例:#获取字符串长度[root@localhost ~]# var='I love china'[root@localhost ~]# echo ${#var}12 #截取字符串[root@localhost ~]#...
  • awk截取字符串 权限

    2016-06-22 10:23:52
    echo "HGJ-0716-INESA" | awk -F - '{print $2}' awk
  • awk---用于使用空格作为分隔符的文本,如: awk '{print $5}' 截取以空格为分隔符的第五列 cut---更为简单,适用于很多情况,如: cut -d ":" -f 1 截取以:为分隔符的第一列
  • 分隔字符串分三种情况,一种是分隔符是空格,一种是非空格,还有一种是多个字符作为分隔符先来创建一个文件吧:Nam Chinese Math EnglishTom 80 90 100Jack 83 88 90Lilei 84 80 88注意:这个文件是用...
  • 大半夜的需要找bug, get awk 新技能 记录下日志文件[2018/08/09 23:37:20] _3339867009106186240_ @ INSERT INTO table (`xxt`, `item`, `xxx`, `lxxx`, `created`, `updated`) VALUES ('83', 'xsx', '0', '-5305....
  • 对于awk和Bash来说,他们使用的...awk的第一个字符从1开始记录;#012345678 ------------Bash#123456789 -------------Awk以下是案例说明:[root@Slave02 shell]# vi substring-extraction.sh#!/bin/bashString=23s...
  • 如何split当前的字符串,用$0,例如:cat num.2012032911 | awk '{print $2}' | awk '{split($0,b,".");print b[2]}' | cut -c 3-获取第二列,例如第二列是com.sb3456.you那么在split当前的这个字符串获得sb3456,...
  • 如何split当前的字符串,用$0,例如:    cat num.2012032911 | awk '{...获取第二列,例如第二列是com.sb3456.you那么在split当前的这个字符串获得sb3456,最后截取sb3456字符串从第3个字符到最后的字符结果
  • 1,产生一个数组 Myarry[1]="How are you doing today?" print Myarry ...2,如果要截取其中的子串,需要用到substr() ...Mysub=substr(myarry[1],startpos,maxlen) ...3,匹配字符串,需要用到match() #返回
  • 利用你学过的知识点(awk、grep、sed),想办法根据要求截取字符串 字符串:http;//www.51xit.top/root/123.html vi 123.txt ##文件插入字符串 http://www.51xit.top/root/123.html 要求; 1.取出...
  • awk字符串截取

    万次阅读 2014-09-02 13:58:11
    awk 字符串截取 linux
  • awk在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被广泛...
  • 现在要写一个脚本,传入一个表名,格式为库名.表名,例如:yewu.data1 现在要取出data1 可以使用命令: table_name=$(echo "yewu.data1" | awk -F '.' '{print $2}')
  • AWK操作字符串截取

    千次阅读 2013-03-21 13:40:44
    对于awk和Bash来说,他们使用的是不同的...awk的第一个字符从1开始记录; #012345678 ------------Bash #123456789 -------------Awk 以下是案例说明: [root@Slave02 shell]# vi substring-extraction.sh #!/bin
  • Shell 第一种: ${parameter%word} 最小限度从后面...word可以是一个具体的字符串,也可以是一个模式字符串。 例子: str='http://www.你的域名.com/cut-string.html' echo ${str%/*} 结果:http://www.你的域名.
  • 经常操作日志的小伙伴们对awk命令肯定不陌生,awk工具给我们分析日志提供了很便捷的操作,帮助我们完成统计和分析日志,也有很多小伙伴不会用到awkawk作为一个强大的工具,对于我们工作能力和工作效率的提升,都有...
  • awk语法讲解:https://blog.csdn.net/hzw05103020/article/details/49247331举例:https://blog.csdn.net/huanongjingchao/article/details/18359225默认是空格,下方例子可以不加-F例如一个字符串为:hello world ,...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 347
精华内容 138
关键字:

awk截取字符串