精华内容
下载资源
问答
  • 文本处理三剑客之AWK

    2019-04-08 20:52:20
    Linux作为开源软件的重要代表,文本的处理对其有着非凡的意义,在介绍了VIM、SED后,本文将Linux另一重要的文本处理工具——awk 文章目录一、概述 一、概述 由于Linux上众多文件以文本形式保存,文本处理几乎是最...

    Linux作为开源软件的重要代表,文本的处理对其有着非凡的意义,在介绍了VIM、SED后,本文将Linux另一重要的文本处理工具——awk,包括awk命令的使用,以及awk脚本编写,以及常用的awk脚本总结

    一、概述

    由于Linux上众多文件以文本形式保存,文本处理几乎是最常见的操作,而其中最知名的工具当属被称为Linux文本处理三剑客的Vim、Sed与AWK了,关于前二者,此前已有介绍:

    awk(读音:[ɔːk])得名与其三个作者Alfred Aho,Peter Weinberger和Brian Kernighan姓氏的首字母,属于贝尔实验室的成果,awk工具自有一套语法,遂亦是一门脚本语言,通常我们将其用作数据提取和报告工具

    作为编程语言,其支持变量、数组、函数,可进行选择、循环等流程控制

    AWK后更名为nawk,而在Linux上使用的为GNU实现的gawk,若非特别说明,以下的awk均指gawk

    二、AWK的执行过程

    GAWK(1)中对于该工具的描述为“pattern scanning and processing language”,不同于Sed将文本对每一行进行处理,AWK通过迭代将输入中读取到的每一行的每一个字段分别进行处理,并且将切割的每一段依次以$1$2$3、……编号(与Shell编程中的$1$2$3、……不同),而$0则表示所有字段,即当前处理的行

    三、基础用法

    awk的基础使用格式为

    awk [OPTIONS] 'PROGRAM' FILE ...
    	OPTIONS
    		-F				指定字段分隔符,默认为空白符
    		-v				用户自定义变量,若需要多个,每一个-v后跟一个自定义变量
    
    	PROGRAM			awk执行脚本,可指定多个,由;分隔,PROGRAM由两部分组成:
    		PATTERN{ACTION}
    			PATTERN		匹配模式,可使用如下方式
    				/PAT1/,/PAT2/					地址定界,即从第一次能被PAT1匹配到的行开始,至第一次能被PAT2匹配到的行结束
    				/PAT/							能被PAT匹配到的行
    				!/PAT/							取反,即不能被PAT匹配到的行
    				BOOL_EXPRESSION					布尔表达式
    
    				BEGIN				即字面值BEGIN,awk脚本运行前执行一次
    				END				即字面值END,awk脚本运行完成后执行一次
    
    			ACTION			执行的操作
    				print					打印当前行,其后可跟参数,如print $1即打印第一个字段
    

    如,显示UID大于500的用户的用户名

    [root@localhost ~]# awk -F: '$3>500{print $1}' /etc/passwd
    polkitd
    sssd
    colord
    libstoragemgmt
    nfsnobody
    chrony
    zhangsan
    logstash
    abc1
    abc2
    abc3
    abc4
    abc5
    abc6
    abc7
    abc8
    abc9
    abc10
    tom
    gentoo
    user2
    user3
    user1
    

    显示用户shell为bash的用户

    [root@localhost ~]# awk -F: 'BEGIN{print "=====Start====="};$7~/bash$/{print $1};END{print "======END======"}' /etc/passwd
    =====Start=====
    root
    zhangsan
    logstash
    abc1
    abc2
    abc3
    abc4
    abc5
    abc6
    abc7
    abc8
    abc9
    abc10
    tom
    user2
    user3
    user1
    ======END======
    

    其中$7~/bash$//etc/passwd/文件每行的低7个字段(即用户shell)与模式bash$匹配,下文将做详细介绍

    四、awk进阶

    1. awk变量

    需要特别指出的是,不同于shell编程,awk中的变量引用不需要加$

    内建变量

    记录变量

    • FS: input Field Separator,读取文件本时,所使用字段分隔符,默认为空白字符;

    • RS: Record separator,输入时所使用的行分隔符,默认为换行符;

    • OFS: Output Filed Separator,输出时使用的分隔符,默认为空白字符;

    • ORS:Output Row Separator,输出文本信息所使用的行分隔符,默认为换行符;

    如,取出/etc/passwd第一个字段:awk -v FS=: '{print $1}' /etc/passwd

    数据变量

    • NR: theNumber of input Records,awk命令所处理的记录数

      • 如果有多个文件,这个数目会把处理的多个文件中行统一计数
    • NF:Number of Field,当前记录的field个数;

      • awk中的变量引用无需使用$,故若使用$NF则表示最后一个Field
    • FNR:与NR不同的是,FNR用于记录正处理的行是当前处理文件的行数

    • ARGV: 数组,保存命令行本身这个字符串,如

      awk '{print $0}' a.txt b.txt
      

      在这个命令中,ARGV[0]保存awk,ARGV[1]保存a.txt;

    • ARGC: awk命令的参数的个数;

    • FILENAME: awk命令当前正在处理的文件的名称;

    • ENVIRON:当前shell环境变量及其值的关联数组;如:

      awk 'BEGIN{print ENVIRON["PATH"]}'
      

    用户自定义变量

    gawk允许用户自定义自己的变量以便在程序代码中使用,变量名命名规则与大多数编程语言相同,只能使用字母、数字和下划线,且不能以数字开头。gawk变量名称区分字符大小写

    • 使用-v定义
      awk -v num1=20 -v num2=30 'BEGIN{print num1+num2}'
      
    • 在脚本中定义
      awk 'BEGIN{num1=20;num2=30;print num1+num2}'
      awk '{num1=20;num2=30}{print num1+num2}' /etc/issue
      

    变量赋值

    • 在脚本中赋值变量
      在gawk中给变量赋值使用赋值语句进行,例如:
      awk 'BEGIN{var="variable testing";print var}'
      
    • 在命令行中使用赋值变量
      gawk命令也可以在“脚本”外为变量赋值,并在脚本中进行引用。例如,上述的例子还可以改写为:
      awk -v var="variable testing" 'BEGIN{print var}'
      

    2. printf

    基础用法

    printf即Print Formatting,即格式化输出,同print,其属于PROGRAM中的ACTION,可实现较print高级的格式输出

    其使用格式为:

    printf FORMAT, ITEM1, ITEM2, ...
    

    需要说明的是

    1. printf必须要指定FORMAT

    2. FORMAT用于指定后面的每个ITEM的输出格式

    3. printf语句不会自动打印换行符\n

    FORMAT格式的指示符都以%开头,后跟一个字符;如下:

    Format 描述
    %c 显示字符的ASCII码
    %d, %i 十进制整数
    %e, %E 科学计数法显示数值
    %f 显示浮点数
    %g, %G 以科学计数法的格式或浮点数的格式显示数值
    %s 显示字符串
    %u 无符号整数
    %% 显示%自身

    另外,在指定格式时,于%于字符之间可有修饰符,用于限定输出样式,形式如下:

    [+|-]M[.N]
    	+		显示数值符号
    	-		左对齐,不指定则为右对齐
    	M		显示宽度,默认为右对齐
    	N		小数点后的精度
    

    如:

    [root@localhost ~]# awk -F: '{printf "%20s %-s\n",$1,$3}' /etc/passwd
                    root 0
                     bin 1
                  daemon 2
                     adm 3
                      lp 4
                    sync 5
                shutdown 6
                    halt 7
                    mail 8
                operator 11
                   games 12
                     ftp 14
                  nobody 99
           avahi-autoipd 170
                    dbus 81
                 polkitd 999
                    abrt 173
                    sssd 998
                  colord 997
                     ntp 38
          libstoragemgmt 996
                     rpc 32
                   rtkit 172
                 usbmuxd 113
                 rpcuser 29
               nfsnobody 65534
                   mysql 27
                     tss 59
                  chrony 995
                   pulse 171
                     gdm 42
                 postfix 89
                    sshd 74
                 tcpdump 72
                zhangsan 1003
                  apache 48
         systemd-network 192
                logstash 1007
                    abc1 1008
                    abc2 1009
                    abc3 1010
                    abc4 1011
                    abc5 1012
                    abc6 1013
                    abc7 1014
                    abc8 1015
                    abc9 1016
                   abc10 1017
                   named 25
                     tom 5001
                  gentoo 5002
                   user2 5004
                   user3 5005
                   user1 5006
    [root@localhost ~]# awk -F: '{printf "%-15s %i\n",$1,$3}' /etc/passwd
    root            0
    bin             1
    daemon          2
    adm             3
    lp              4
    sync            5
    shutdown        6
    halt            7
    mail            8
    operator        11
    games           12
    ftp             14
    nobody          99
    avahi-autoipd   170
    dbus            81
    polkitd         999
    abrt            173
    sssd            998
    colord          997
    ntp             38
    libstoragemgmt  996
    rpc             32
    rtkit           172
    usbmuxd         113
    rpcuser         29
    nfsnobody       65534
    mysql           27
    tss             59
    chrony          995
    pulse           171
    gdm             42
    postfix         89
    sshd            74
    tcpdump         72
    zhangsan        1003
    apache          48
    systemd-network 192
    logstash        1007
    abc1            1008
    abc2            1009
    abc3            1010
    abc4            1011
    abc5            1012
    abc6            1013
    abc7            1014
    abc8            1015
    abc9            1016
    abc10           1017
    named           25
    tom             5001
    gentoo          5002
    user2           5004
    user3           5005
    user1           5006
    

    输出重定向

    printf可实现类似shell中的重定向:

    print items > output-file
    print items >> output-file
    print items | command
    
    文件描述符

    /dev/stdin:标准输入

    /dev/sdtout: 标准输出

    /dev/stderr: 错误输出

    /dev/fd/N: 某特定文件描述符,如/dev/stdin就相当于/dev/fd/0

    awk -F: '{printf "%-15s %i\n",$1,$3 > "/dev/stderr" }' /etc/passwd
    

    3. awk中的操作符

    awk中的操作符与C语言类似,此处仅作总结

    算术操作符

    • -x: 负值
    • +x: 转换为数值;
    • x^y: 乘方
    • x**y: 乘方
    • x*y: 乘法
    • x/y:除法
    • x+y:加法
    • x-y:减法
    • x%y:取模

    字符串操作符

    字符串操作符只有一个,而且不用写出来,用于实现字符串连接

    赋值操作符

    • =

    • +=

    • -=

    • *=

    • /=

    • %=

    • ^=

    • **=

    • ++

    • --

    注意: 如果某模式为=号,此时使用/=/可能会有语法错误,应以/[=]/替代

    模式匹配

    • ~:是否匹配
    • !~:是否不匹配

    比较操作符

    比较操作 描述
    x < y True if xis less than y.
    x <= y True if x is less than or equal to y.
    x > y True if x is greater than y.
    x >= y True if x is greater than or equal to y.
    x == y True if x is equal to y.
    x != y True if x is not equal to y.
    x ~ y True if the string x matches the regexp denoted by y.
    x !~ y True if the string x does not match the regexp denoted by y.
    subscript in array True if the array array has an element with the subscript subscript.

    逻辑关系操作符

    &&:与
    ||:或
    !:非

    4. 布尔值

    awk中,任何非0值或非空字符串都为真,反之就为假

    5. 条件表达式

    1. selector?if-true-exp:if-false-exp
      	selector		/*条件表达式,若其为真,执行if-true-exp,否则执行if-false-exp
      
    2. if selector; then
      	if-true-exp
      else
      	if-false-exp
      fi
      

    如,判断系统上用户的UID,若小于1000则显示“Common User”,否则显示“Sysadmin or Sysuser”:

    awk -F: '{$3>=1000?usertype="Common User":usertype="Sysadmin or Sysuser";printf "%15s:%-s\n",$1,usertype}' /etc/passwd
    

    6. 函数

    函数调用

    awk中的函数调用形式为

    function_name(para1,para2,)
    

    常用内置函数

    • split(string, array [, fieldsep [, seps ] ])

      功能:将string表示的字符串以fieldsep为分隔符进行分隔,并将分隔后的结果保存至array为名的数组中;数组下标为从1开始的序列;如:

      stringroot:x:0:0:root:/root:/bin/bash

      • user[1]=root
      • user[2]=x
      • user[7]=/bin/bash

      • netstat -ant | awk '/:80\>/{split($5,clients,":");IP[clients[1]]++}END{for(i in IP){print IP[i],i}}' | sort -rn | head -50

      • netstat -tan | awk '/:80\>/{split($5,clients,":");ip[clients[4]]++}END{for(a in ip) print ip[a],a}' | sort -rn | head -50

      • netstat -tan | awk '/^tcp\>/{split($5,ip,":");count[ip[1]]++}END{for(i in count){print i,count[i]}}'

      • df -lh | awk '!/^File/{split($5,percent,"%");if(percent[1]>=20){print $1}}'

    • length([string])
      功能:返回string字符串中字符的个数
    • substr(string, start [, length])
      功能:取string字符串中的子串,从start开始,取length
      start从1开始计数
    • sub(r, s [,t])
      功能:以r表示的模式,查找t所表示的字符串中,将第一次匹配到内容替换为s所表示的内容
    • gsub(r, s [,t])
      功能:以r表示的模式,查找t所表示的字符串中,将所有匹配到内容替换为s所表示的内容
    • system(command)
      功能:执行系统command并将结果返回至awk命令
    • rand()
      功能:返回0到1之间的随机数
      若不进行额外处理,后续得到的随机数与第一次的相同
    • systime()
      功能:取系统当前时间
    • tolower(s)
      功能:将s中的所有字母转为小写
    • toupper(s)
      功能:将s中的所有字母转为大写

    自定义函数

    自定义函数使用function关键字,格式如下:

    function F_NAME([variable])
    {
    	STATEMENTS
    }
    

    此外,函数还可以使用return语句返回值,格式为return value

    7. Pattern

    awk的使用格式为awk 'program' input-file1 input-file2 ...

    其中的program为:

    pattern { action }
    pattern { action }
    ...
    

    此处再次列出常见的模式类型:

    • 1、/Regexp/: 正则表达式,格式为/regular expression/,仅处理能被此处的模式匹配到的行,如

      • awk -F: '$NF~/bash$/{print $1,$NF}' /etc/passwd
        
    • 2、expresssion: 表达式,其值非0或为非空字符时满足条件,如:$1 ~ /foo/ 或 $1 == "Brahming",用运算符~(匹配)和!~(不匹配),如:

      • awk -F: '$3>=1000{print $1,$3}' /etc/passwd
        
      • awk -F: '$NF~/bash$/{print $1,$NF}' /etc/passwd
        
    • 3、Line Ranges: 指定的匹配范围,格式为pat1,pat2,不支持直接指定行号,可使用:

      • awk -F: '/^root/,/^user/{print $1}' /etc/passwd
        
      • awk -F: '(NR>=2&&NR<=10){print $1}' /etc/passwd
        
    • 4、BEGINEND:特殊模式,仅在awk命令执行前运行一次或结束前运行一次

      • BEGIN:仅在开始处理文件中的文本之前执行一次
      • END:仅在文本处理完成之后,命令结束之前,执行一次
    • 5、Empty(空模式):匹配任意输入行

    8. 控制语句

    if-else

    • 语法:
      if (condition) {then-body}
      if (condition) {then-body} else {else-body}
      
    • awk '{if ($3==0) {print $1, "Adminitrator";} else { print $1,"Common User"}}' /etc/passwd
      awk -F: '{if ($1=="root") print $1, "Admin"; else print $1, "Common User"}' /etc/passwd
      awk -F: '{if ($1=="root") printf "%-15s: %s\n", $1,"Admin"; else printf "%-15s: %s\n", $1, "Common User"}' /etc/passwd
      awk -F: -v sum=0 '{if ($3>=500) sum++}END{print sum}' /etc/passwd
      awk '{if(NF>5) print}' /etc/fstab
      awk -F: '{if($NF="/bin/bash") print $1}' /etc/passwd
      df -h | awk -F[%] '/^\/dev/{print $1}' | awk '{if($NF>=20) print $1}'
      

    while

    • 语法:

      while (condition){statement1; statment2; ...}
      
    • 例:

      awk -F: '{i=1;while (i<=3) {print $i;i++}}' /etc/passwd
      awk -F: '{i=1;while (i<=NF) { if (length($i)>=4) {print $i}; i++ }}' /etc/passwd
      awk '{i=1;while (i<=NF) {if ($i>=100) print $i; i++}}' hello.txt
      	# hello.txt文件的内容为一堆随机数
      awk '/^[[:space:]]*linux16/{i=1;while(i<=NF) {if(length($i)>=7) {print $i,length($i)};i++}}' /etc/grub2.cfg
      

    do-while

    do-while至少执行一次循环体,不管条件满足与否

    • 语法:

      do{statement1, statement2, ...} while (condition)
      
    • 例:

      awk -F: '{i=1;do {print $i;i++}while(i<=3)}' /etc/passwd
      awk -F: '{i=4;do {print $i;i--}while(i>4)}' /etc/passwd
      

    for

    • 语法:

      for ( variable assignment; condition; iteration process) { statement1, statement2, ...}
      
    • 例:

      awk -F: '{for(i=1;i<=3;i++) print $i}' /etc/passwd
      awk -F: '{for(i=1;i<=NF;i++) { if (length($i)>=4) {print $i}}}' /etc/passwd
      awk '/^[[:space:]]*linux16/{for(i=1;i<=NF;i++){print $i,length($i)}}' /etc/grub2.cfg
      

    awk的for循环还可以用来遍历数组元素:

    • 语法:

      for (i in array) {statement1, statement2, ...}
      
    • 例:统计默认shell

      [root@localhost ~]# awk -F: '$NF!~/^$/{BASH[$NF]++}END{for(A in BASH){printf "%15s:%i\n",A,BASH[A]}}' /etc/passwd
            /bin/sync:1
            /bin/bash:17
        /sbin/nologin:32
           /sbin/halt:1
           /bin/false:1
             /bin/csh:1
       /sbin/shutdown:1
      

    switch

    • 语法:
      switch (expression) { case VALUE1 or /REGEXP/: statement1; case VALUE1 or /REGEXP/: statement2;; default: statement1, ...}
      

    break与continue

    与其他语言类似,常用于循环或switch语句中,也可跳出N层嵌套:

    break [N]
    

    next

    提前结束对本行文本的处理,并接着处理下一行;例如,下面的命令将显示其ID号为奇数的用户:

    awk -F: '{if($3%2==0) next;print $1,$3}' /etc/passwd
    

    exit

    退出主输入循环,进入END,若没有ENDEND中有exit语句,则退出脚本

    9. 数组

    数组的概念此处不再赘述,在awk中,数组的引用也与其他语言类似:

    array[index-expression]
    
    说明
    • index-expression可以使用任意字符串
    • 所有字符串需要使用双引号
    • 如果某数据组元素事先不存在,那么在引用其时,awk会自动创建此元素并初始化为空串

      • 因此,要判断某数据组中是否存在某元素,需要使用index in array的方式

    要遍历数组中的每一个元素,可使用for语句,此处再次列出:

    for (var in array) { statement1, ... }
    

    其中,var用于引用数组下标,而不是元素值

    • array[var]: 数组中某一元素的值

    • 例:

      
      netstat -ant | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
      	# 每出现一被/^tcp/模式匹配到的行,数组S[$NF]就加1,NF为当前匹配到的行的最后一个字段,此处用其值做为数组S的元素索引;
      
      awk '{counts[$1]++}; END {for(url in counts) print counts[url], url}' /var/log/httpd/access_log
      	# 用法与上一个例子相同,用于统计某日志文件中IP地的访问量
      	
      awk 'BEGIN{weekdays["mon"]="Monday";weekdays["sun"]="sunday";for(i in weekdays) {print weekdays[i]}}'
      	# i变量会遍历weekdays的每个索引
      	
      awk '{for(i=1;i<=NF;i++){count[$i]++}} END{for(i in count){print i,count[i]}}' /etc/fstab
      	# 显示文件中每个单词出现的次数
      
    • 删除数组变量
      从关系数组中删除数组索引需要使用delete命令。使用格式为:

      delete  array[index]
      

    五、例

    1. 系统连接状态查看

    • 1.查看TCP连接状态

      netstat -nat |awk{print $6}|sort|uniq -c|sort -rn
      
      netstat -n | awk ‘/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}’ 或
      netstat -n | awk ‘/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}netstat -n | awk ‘/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"t",arr[k]}netstat -n |awk ‘/^tcp/ {print $NF}|sort|uniq -c|sort -rn
      
      netstat -ant | awk{print $NF}| grep -v ‘[a-z]| sort | uniq -c
      
    • 2.查找请求数请20个IP(常用于查找攻来源):

      netstat -anlp|grep 80|grep tcp|awk{print $5}|awk -F: ‘{print $1}|sort|uniq -c|sort -nr|head -n20
      
      netstat -ant |awk ‘/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}|sort -rn|head -n20
      
    • 3.用tcpdump嗅探80端口的访问看看谁最高

      tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"."{print $1"."$2"."$3"."$4}| sort | uniq -c | sort -nr |head -20
      
    • 4.查找较多time_wait连接

      netstat -n|grep TIME_WAIT|awk{print $5}|sort|uniq -c|sort -rn|head -n20
      
    • 5.找查较多的SYN连接

      netstat -an | grep SYN | awk{print $5}| awk -F: ‘{print $1}| sort | uniq -c | sort -nr | more
      
    • 6.根据端口列进程

      netstat -ntlp | grep 80 | awk{print $7}| cut -d/ -f1
      

    2. 网站日志分析(Apache):

    • 1.获得访问前10位的ip地址

      cat access.log|awk{print $1}|sort|uniq -c|sort -nr|head -10
      cat access.log|awk{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}
    • 2.访问次数最多的文件或页面,取前20

      cat access.log|awk{print $11}|sort|uniq -c|sort -nr|head -20
      
    • 3.列出传输最大的几个exe文件(分析下载站的时候常用)

      cat access.log |awk($7~/.exe/){print $10 " " $1 " " $4 " " $7}|sort -nr|head -20
      
    • 4.列出输出大于200000byte(约200kb)的exe文件以及对应文件发生次数

      cat access.log |awk($10 > 200000 && $7~/.exe/){print $7}|sort -n|uniq -c|sort -nr|head -100
      
    • 5.如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面

      cat access.log |awk($7~/.php/){print $NF " " $1 " " $4 " " $7}|sort -nr|head -100
      
    • 6.列出最最耗时的页面(超过60秒的)的以及对应页面发生次数

      cat access.log |awk($NF > 60 && $7~/.php/){print $7}|sort -n|uniq -c|sort -nr|head -100
      
    • 7.列出传输时间超过 30 秒的文件

      cat access.log |awk($NF > 30){print $7}|sort -n|uniq -c|sort -nr|head -20
      
    • 8.统计网站流量(G)

      cat access.log |awk{sum+=$10} END {print sum/1024/1024/1024}
    • 9.统计404的连接

      awk($9 ~/404/)’ access.log | awk{print $9,$7}| sort
      
      1. 统计http status
      cat access.log |awk{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}'
      cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn
      
    • 11.蜘蛛分析,查看是哪些蜘蛛在抓取内容

      tcpdump -i eth0 -l -s 0 -w - dst port 80 | strings | grep -i user-agent | grep -i -E 'bot|crawler|slurp|spider'
      
    展开全文
  • 了解可用于常见和特殊文本处理需求各种命令。 示例已在GNU / Linux上进行了测试-其他发行版在语法/功能上有所不同,有关详细信息,请参见其各自man页。 :warning_selector: :warning_selector: 我不再积极从事...
  • 请点击上面“思影科技”四个字,选择关注作者,思影科技专注于脑影像数据处理,涵盖(fMRI,结构像,DTI,ASL,EEG/ERP,FNIRS,眼动)等,希望专业内容可以给关注者带来帮助,欢迎留言讨论,也欢迎参加思影科技课程,可...

    请点击上面“思影科技”四个字,选择关注作者,思影科技专注于脑影像数据处理,涵盖(fMRI,结构像,DTI,ASL,EEG/ERP,FNIRS,眼动)等,希望专业的内容可以给关注者带来帮助,欢迎留言讨论,也欢迎参加思影科技的课程,可添加微信号siyingyxf19962074063进行咨询。(文末点击浏览)

         科技论文写作的最后一部分就是参考文献,引用的文献正确与否,一方面,从一定程度上反映了作者的学术态度,而另一方面,编辑和审稿人也喜欢从这部分挑刺儿。目前参考文献管理软件有多种,EndNoteThomson Reuters 公司开发的SCI 数据库采用的官方软件,也是最受科研工作者青睐的参考文献管理软件。EndNote的功能十分强大,支持近4000种国际期刊的参考文献格式,拥有几百种写作模板,可在word中快速插入参考文献。除此之外,EndNote 还可以轻松管理成千上万条参考文献,对所有文献进行快速分类保存、查看和引用。因此,今天小编重点介绍下Endnote的主要功能以及在科技论文写作过程中可能出现的问题,希望能帮助到同在科研一线奋斗的小伙伴们。一.使用Endnote管理文献

    1.创建 EndNote 本地数据库

          打开EndNote X8 软件——选择File下拉菜单——选择New

          此时会跳出New Reference Library窗口——选择保存位置,单击保存即创建一个EndNote 本地数据库,文件名为“My EndNote Library”,可对“MyEndNote Library”进行重命名

           再次进入该数据库

         单击File——Open——Open Library——选择“MyEndNote Library”

    2. 使用EndNote导入文献       使用EndNote 导入文献的主要方式有四种:       方法一:使用网上数据库导入       几乎所有的文献都可以从数据库直接导入。例如从谷歌镜像网站、百度学术网站、Web of Science     搜索该文章——选择引用——导入链接选择Endnote——下载好后用Endnote打开         方法二:使用PDF 直接导入       适用于已保存在电脑中的本地文件。       点击File ——Import——File——导入PDF 文件或含PDF 文件的文件夹。       方法三:使用Endnote在线检索导入        以Web of Science为例:      在工具栏中选择Tools——Online Search——PubMed进行在线检索——输入关键词、作者、年份等搜索条件——点击Search即可。        方法四:手动输入(较麻烦)        这主要针对少数无法直接从网上下载的参考文献的情况。      在EndNoteX8 窗口中点击Reference——New reference,即弹出一个窗口——窗口的左上角点击Reference type下拉菜单(默认是Journal Artical类型)——根据需要选择参考文献类型,逐一输入参考文献内容,即可建立一条参考文献。3.文献管理EndNote 对文献的管理主要包括以下几个方面:      功能一:对文献进行阅读、排序、查重      点击参考文献后在EndNote 右侧有一预览窗口,通过此窗口可以看到参考文献的标题作者杂志等信息。在主界面上直接点击字段名称可按降序或升序排列如点击Year,即可按年份进行排序通过排序即可很快找到重复参考文献,对于重复的参考文献可进行批量删除。

    注:第一列灰色小圆点可以用来标记此参考文献是否阅读。

    59a1922b95b8cf265513e1ebd845266c.png

    功能二:对文献进行分组、编辑      在EndNote 主界面的左侧有“My Groups”,可对参考文献进行分组,从而使参考文献更有条理。      首先要新建一个组别(Create Group)——将参考文献批量选择直接拖拽至新组,在EndNote 的预览窗口可以对相应条目进行编辑。

    539b4503c848a2c683d894bf262b7d92.png

    35c0037e064465347253634f1aef45bd.png

    功能三:添加全文

    对于已导入的参考文献条目,可以添加相应的PDF全文(点击第二列回形针标识可以访问全文链接),获得PDF 全文的途径主要有两种:

    1)在线查找、直接添加

    此种方法主要用于已经购买数据库权限的情况。

    选择参考文献后,点击右键——选择Find Full Text——找到全文后EndNote 将自动添加PDF 全文。

    d388f318122b6fb079cc6d6fa3b7535d.png

    2)将其他途径获得的PDF 全文添加到相应文献中。

    点击右键或References菜单——选择File Attachments——选择Attach File进行附件添加。

    050b42a1432c3cb3ad05cad51b44a402.png

    二、科技论文写作中Endnote常见问题解答

    1.为何word中找不到Endnote版块?

    有的时候,小伙伴们明明安装了Endnote,但在word中插入参考文献时却找不到Endnote版块,这可怎么办?不要急,不要慌,小编来帮忙:

    打开word——选择左上角文件菜单(File)——选择最下角的选项菜单(Options)——选择加载项(Add-ins)——下方管理处(Manage)选择COM加载项——确定——勾选Endnote相关选项——确定。

    aedc420fe30631bbf71260eb016134ff.png

    此时在Word菜单栏会出现Endnote版块啦。

    2.如何能在Endnote中快速插入文献?

    首先word中定位需要插入文献的位置,然后在Endnote中选中你要插入的参考文献——插入参考文献。在这里,小编有两种方法教给大家:

    方法一:在Endnote上方菜单中直接选择插入引用(Insert Citation)

    2cdbc654279f29925b3ca3b6795f0d0f.png

    方法二:回到word中,在Endnote版块下选择插入引用(Insert Citation)——选择插入选择引用(Insert Selected Citation)

    71084c66977ed021ee33dbd45d90cacb.png

    PS:如果你Endnote中没有该文献,可在谷歌镜像网站或百度学术网站中搜索该文章——选择引用——导入链接选择Endnote——下载好后用Endnote打开并选中。

    3c154ca1733d26000f7b85a30467e599.png

    3. 如何在正文中修改插入的参考文献的形式?通常,正文中默认插入参考文献的形式为(XX et al.,2020),但小编在写作中发现,个别情况下,会要求参考文献只出现年份的形式,例如XX et al (2020) reported that…此时,我们只需要对原有插入文献进行编辑即可,方法如下:选中word中的参考文献(XX et al.,2020)——Endnote版块下选择编辑和管理引用(Edit and Manage Citation)——选择编辑引用(Edit Citation)——选择格式,在下拉框中选择需要的格式:作者(年份)或者不包括作者——确定

    a1d713cba275b107fbd64b886ee72b07.png

    4. 如何批量修改参考文献的格式?小编在写作时常常会边写边插入文献,通常我会随便先随便选择一种杂志的参考文献格式进行插入,但投稿时不同的杂志规定的参考文献格式往往不同,此时我们需要在投稿前进行相应的修改,常规操作如下:首先,在Endnote版块下选择导出类型(Output style)下拉菜单——点击选择另一种类型(Select another style)

    ef717c3dd6ac7488ba9d6c492ccf950a.png

    再根据杂志名称查找所要选择的模式——确认

    fdaf68391ee12d2c1390871848c5f99d.png

    最后,点击跟新引文和文献目录(Update Citations and Bibliography)

    b6f71806cba669b79e09045f0fddea5e.png

    这样之前插入的所有参考文献的格式都会自动变成杂志要求的啦。

    5.按要求插入参考文献后发现依然有格式错误怎么办?

    小编在刚开始投稿时就不怎么注意参考文献这块,以为按照杂志要求插入相应格式参考文献就完事了,可事实上,在我们从网上导入这篇参考文献开始就可能存在一些错误。例如:标题的标点符号确实或乱码、标题中缺个空格、插入后发现缺少卷号或页码等等,这时候就要自己逐个检查进行修改了,操作方法如下:

    (1)个别文献存在文字或标点的错误

    Endnote中选中你要修改的参考文献——双击进入修改界面——在标题栏进行相应修改——修改完点右上角X退出——点保存——回到word——点击跟新引文和文献目录(Update Citations and Bibliography)

    2f11cf29d4b10d90c10545373e494e05.png

    (2)所有插入的文献存在格式错误(例如:缺少期号IssueDOI号)进入Endnote——选中你要修改的参考文献——点击Edit——选择Output style下拉菜单——选中所需修改的杂志名称(例如Plant Cell)——再点击上方的Edit“Plant Cell”进入引文格式编辑界面

    4433091dd5eafab0ee110309d06e0451.png

    选择文献目录(Bibliography)的模板(Templates)——选择杂志(Journal Article)需要改动的部分进行相应编辑——选择右上角插入菜单(Insert Field)选择需要插入的部分(例如期号IssueDOI号,Issue外面的括号得自己打哦)

    37568cb3be4fdf9fbb791c6ec25e67b2.png

    修改完点右上角X退出——点保存——双击所要插入的文献,确认IssueDOI是否有相关信息,如没有需自行补充完整——回到word——点击更新引文和文献目录(Update Citations and Bibliography)

    5d56955479f297ff19be6aab4aeba4c2.png

    6.怎么修改都存在问题怎么办?      小编有遇到过一种情况,按照正常操作修改后仍有部分错误的格式或者形式无法更正,小编怀疑是边写作边插入,再加上发给导师各种修改,由于word在不同电脑上打开造成的某种bug。针对这种情况小编也是各种无奈,最终采取了一种最笨的方法,取消Endnoteword之间的链接,手动修改个别错误的地方,毕竟只要修改正确投稿就行了嘛,操作方法如下:选择Endnote版块下的转换引文和文献目录(Convert Citation and Bibliography)——选择转换为纯文本(Convert to Plain Text)——点击确认——按提示将文档另存为——在参考文献对应位置改动即可。

    434c4f73b88f72a2b762be60bfcbd090.png

    以上是小编为大家带来的Endnote主要功能及使用常见问题介绍,相信可以为科研新手们解决大部分问题。最后小编在这里祝大家科研顺利,paper多多哦~~

    ead77fab7ba441b24aa16a5123a745d8.png

    微信扫码或者长按选择识别关注思影

    非常感谢转发支持与推荐

    欢迎浏览思影的数据处理课程以及数据处理业务介绍。(请直接点击下文文字即可浏览思影科技所有的课程,欢迎添加微信号siyingyxf19962074063进行咨询,目前思影采取预报名制度,所有课程均开放报名,受疫情影响部分课程时间或有调整,报名后我们会第一时间联系,会为您保留名额):

    第二十九届磁共振脑影像基础班(南京3.15-20)

    第十五届磁共振脑网络数据处理班(南京4.13-18)

    第十二届磁共振弥散张量成像(南京3.21-26)

    第六届小动物磁共振脑影像数据处理班(3.27-4.1)第七届眼动数据处理班(南京4.9-13)第七届近红外脑功能数据处理班(上海4.2-7)第六届任务态fMRI专题班(重庆4.8-13)第十四届磁共振脑网络数据处理班(重庆3.18-23)将会开展的课程:

    弥散磁共振成像数据处理提高班

    磁共振脑影像结构班

    脑影像机器学习班

    磁共振ASL(动脉自旋标记)数据处理班

    近红外脑功能数据处理班

    眼动数据处理班

    脑电数据处理入门班

    脑电数据处理中级班

    脑电信号数据处理提高班脑磁图(MEG)数据处理学习班数据处理服务,招聘及其他产品(直接点击即可浏览内容)思影数据处理业务一:功能磁共振(fMRI)思影数据处理业务二:结构磁共振成像(sMRI)与DTI思影数据处理业务三:ASL数据处理思影数据处理业务四:EEG/ERP数据处理思影数据处理服务五:近红外脑功能数据处理思影数据处理服务六:脑磁图(MEG)数据处理招聘:脑影像数据处理工程师(重庆&南京)BIOSEMI脑电系统介绍

    目镜式功能磁共振刺激系统介绍

    展开全文
  • 常见的软件系统缩写

    2011-11-03 09:23:29
    [b]CRM (Customer Relationship Management) [/b] 客户关系管理系统 [b]CMS (Content Management ...CMS功能并不只限于文本处理,它也可以处理图片、Flash动画、声像流、图像甚至电子邮件档案。 [b]D...
    [b]CRM (Customer Relationship Management) [/b]
    客户关系管理系统

    [b]CMS (Content Management System)[/b]
    内容管理系统:它具有许多基于模板的优秀设计,可以加快网站开发的速度和减少开发的成本。CMS的功能并不只限于文本处理,它也可以处理图片、Flash动画、声像流、图像甚至电子邮件档案。

    [b]DRP(Distribution Resource Planning) [/b]
    分销资源计划

    [b]EAI(Enterprise Application Integration)[/b]
    企业应用集成

    [b]EC(Electronic Commerce)[/b]
    电子商务

    [b]EIP(Enterprise Information Portal)[/b]
    企业信息门户

    [b]ERP(Enterprise Resource Planning)[/b]
    企业资源计划

    [b]HRM(Human Resource Manager)[/b]
    人力资源管理

    [b]GIS(Geographic Information System)[/b]
    地理信息系统

    [b]OA(Office Automation)[/b]
    办公自动化--的简写,是现代利用电脑进行全自动的办公,目的是提高效率。

    [b]MIS(Management Information System)[/b]
    管理信息系统:主要指的是进行日常事物操作的系统。这种系统主要用于管理需要的记录,并对记录数据进行相关处理。
    展开全文
  • 常见的文本类型 文本类 TXT:纯文本格式,在不同操作系统之间可以通用,兼容于不同的文字处理软件。因为无文件头,所以不易被病毒感染。 Doc:Microsoft Office生成的文档格式 XLS:Excel电子表格文件 WPS:国产文字...

    常见的文本类型

    文本类

    TXT:纯文本格式,在不同操作系统之间可以通用,兼容于不同的文字处理软件。因为无文件头,所以不易被病毒感染。
    Doc:Microsoft Office生成的文档格式
    XLS:Excel电子表格文件
    WPS:国产文字处理软件WPS声称的文档格式

    图片类

    Bmp:Windows自带的图片格式,数据量大显像清晰
    GIF:最大的特点是提供了压缩功能,使多幅任意大小的图片保存在一个文件中,形成动画的图片文件,且颜色数只有256,文件小
    Jpg:具有较高压缩比的图片文件,压缩过程中的失真程度很小,目前使用范围广泛,特点是,文件小、颜色数和分辨率高。
    PSD:Photoshop格式文件

    视频类

    MPEG/Mpg:采用MPEG(中间帧)压缩方式的视频文件,是目前最常见的视频文件,可以对包括声音在内的移动图像以1:100的比率进行压缩,并且它还支持1024 X 768 的分辨率、CD音质播放、每秒30帧的播放速度等优秀功能
    AVI:对视频文件采用一种有损压缩方式,该方式的压缩率较高,并可将音频和视频混合到一起使用,因此尽管画面质量一般,但仍然应用广泛。支持256色和RLE压缩。
    Rm/Ra:旧时视频文件格式
    MOV:苹果机一直到PC机的视频文件,采用了有损压缩方式,但效果较AVI要好一些。
    DAT:常见的VCD、CD光盘存储的视频文件格式
    FLV:流行的网络视频格式,数据量小,适合网络传输

    声音类

    WAV:最常见的声音文件,是微软公司专门为Windows开放的一种标准数字音频文件(又称波形文件),能保证声音不失真,但占用磁盘空间太大(音乐12M/Min)
    MID/MIDI:国际MIDI协会开发的乐器数字接口文件,它能将乐器所奏出来的声音数字化,然后在播放时再对数字进行转化,因此占用的磁盘空间非常小,但效果一般,Mid文件适用于记录乐曲旋律,而不适合于对歌曲进行处理。目前Mid文件主要靠硬件生成,依靠软件合成Mid文件的技术还不完善。
    MP3:目前最热门的音乐文件,它能以较小的比特率、较大的压缩率达到近乎完美的CD音质(压缩率可达1:12,音乐1M/min)
    WMA:压缩率比MP3高,占用空间更小,但音质比MP3差一些

    其他类别

    HTML:超文本标识语言生成的网页文件
    Zip、Arj、Jar、Rar:压缩包文件
    pdf:一种非常流行的文档文件,最大的特点是在任何操作系统下都能正常显示。

    系统类

    Bak:系统备份文件(WBK是word的备份文件、XLK是Excel的辈分文件)
    TMP:最常见的临时文件,一般没有多大使用价值。
    Com:系统命令文件
    Exe:系统可执行文件
    Log:日志文件,对有关应用程序的运行状况进行记录

    转载于:https://www.cnblogs.com/xiaomulei/p/10108198.html

    展开全文
  • 而通用型数据挖掘软件不区分具体数据的含义,能处理常见的数据类型,具有较为广泛的使用范围,其所包含的数据挖掘方法也较为全面,而且通用型数据挖掘软件还具有良好的数据库管理能力以及其他常规的统计分析...
  • 情感分析是一种常见的自然语言处理方法的应用,特别是在以提取文本的情感内容为目标的分类方法中。通过这种方式,情感分析可以被视为利用一些情感得分指标来量化定性数据的方法。尽管情绪在很大程度上是主观的,但是...
  • 一般来讲我们使用纯文本文件保存软件的配置信息,大多数情况下我们对整个系统的操作都是实现通过编辑它的配置文件来完成,也就意味着处理文本文件是我们作为系统管理员是一个重要的基本要求,因此我们必须掌握常见的...
  • PHP开发工程师工作基本职责精选文本 PHP开发工程师需要负责系统文档编制工作和系统相关培训工作。下面是小编为您精心整理PHP...有并发处理和调优经验 4、熟练使用Redis、Memcache等常见非关系型数据库 ...
  • Awk 是个普遍存在的 Unix 命令,用于扫描和处理包含可预测模式的文本。但是,由于它具有函数功能,因此也可以合理地称之为编程语言。 令人困惑的是,有不止一个 awk。(或者,如果你认为只有一个,那么其它几个就是...
  • 2.显示器上的文本或图像是由点组成的,屏幕上点越密,点距越小,分辨率越高; 3.在彩色喷墨打印机中,将油墨进行混合后得到的颜色称为(相减色); 4.数字图像的冗余主要表现为: 空间冗余:图像间相邻像素之间存在...
  • 有很多图像处理软件都可以实现在图像上画点并且显示鼠标处坐标,如windows自带绘图软件,ImageJ等,但是我当下任务需求是标记图像对上对应关键点,并生成相应txt文本。稍微调查了一下各种标记软件,未果,...
  • doc2text通过修复常见的扫描错误来提取高质量的文本 发展文本语料库可能会给屁股带来巨大的痛苦。 由于科学家被锁定在扫描不良的pdf中,因此我们对许多文本数据感兴趣。 这些扫描可能会步履蹒跚,分辨率差,需要帮助...
  • 在计算机中,除了一些专用的文字处理软件 ,如Office,WPS等,最简单的文本文件(*.txt)反而是最流行和广泛使用的用于保存自然语言的数据格式。为了节省空间,文字会以某种编码的形式进行保存。在大多数的中文系统中...
  • 5个常见的展示不同类型数据的错误形式以及如何避免 数据可视化的普及和影响在相对较短的时间内急剧增加。 Google趋势显示,自2009年以来,数据可视化的搜索频率几乎增长了100%,我们已经看到了大量可用的工具和软件...
  • 写在前面: 系统环境:Windows 10 ...由于现在常见的浏览器已经都对URL中的字符进行了解码,因此在使用浏览器时,地址栏中已经做到了正常中文字符 通过浏览器的调试工具,能够查看到在网络上编码传...
  • 软件介绍: TextAutoSplitColumnTextAutoSplitColumn是一款能够将文本自动进行分列小...可将微信等软件上粘贴过来联系人电话名单,一行行自动调整可以解决常见文本分列需求,处理完复制后粘贴到EXCEL文件中即可。
  • 11 vim文本编辑器

    2019-02-19 16:48:00
    和sed相比,sed为字处理器(行编辑器),将文本逐行放入到模式空间(也就是内存)中进行处理,并显示在屏幕上。而vim、vi以及nano都是全屏文本... *Linux系统核心就是通过文本来存储所有的软件配置文件*,所以,...
  • Excel是办公室自动化中非常重要一款数据处理软件,在Excel中函数用来分析和处理数据,如排序、求和、计数、提取数据等等。 Excel函数一共有11类,分别是数据库函数、日期与时间函数、工程函数、财务函数、信息...
  • 文件处理

    2019-05-05 23:54:00
     文本文件一般由单一特定编码的字符组成,如utf-8编码,内容容易统一展示和阅读,大部分文本文件都可以通过文本编辑软件和文字处理软件创建、修改和阅读,最常见的是txt格式的文本文件。  文...
  • 注1:Pico(PIne COmposer)是Unix操作系统中最常见的三种文字处理软件之一,具有文字编辑、搜索、拼写检查、文件浏览和段对齐功能,适合高效地编辑短小的文件。Pico是由华盛顿大学开发的免费软件,随着pine电子邮件...
  • OCR (Optical Character ...即,针对印刷体字符,采用光学方式将纸质文档中文字转换成为黑白点阵图像文件,并通过识别软件将图像中文字转换成文本格式,供文字处理软件进一步编辑加工技术。OCR应用场景
  • OCR (Optical Character ...即,针对印刷体字符,采用光学方式将纸质文档中文字转换成为黑白点阵图像文件,并通过识别软件将图像中文字转换成文本格式,供文字处理软件进一步编辑加工技术。OCR应用场...
  • 软件工程—WC功能实现(JAVA)项目要求​ wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数...
  • 而且由于Vico可以使用现有TextMate捆绑软件,因此添加更多内容很容易。 Vico还具有集成SFTP(用于处理远程文件),分割视图(可让您并排编辑文件)和文件浏览器(用于快速项目导航)。 使用模糊查找在文件...
  • 但是如果处理的是文本文件,那么常见的软件都无法完成加密操作。现在借助两款不同的小工具,就可以轻松解决这个难题。将文本信息变成乱码首先下载运行 Eclipse 这款小工具...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 403
精华内容 161
关键字:

常见的文本处理软件