如何将上百如何将三列数据合并成一列单元并肩用逗点隔开

格式:PDF ? 页数:40页 ? 上传日期: 01:02:11 ? 浏览次数:26 ? ? 300积分 ? ? 用稻壳阅读器打开

全文阅读已结束如果下载本文需要使用

该用户还上传了这些文档

}

我想问的是word中项目编号逗点和其後文字内容之间的距离叫什么

我想问的是word中项目编号逗点和其后文字内容之间的叫什么?
全部
}

【gawk 是 GNU 的 awk具有很强的文本处理功能,简洁优美】

第七章 Actions里面的控制叙述

第九章 使用者定义的函式

=======================================

awk 是一个程式语言,对于文本处理具有很强的功能对於文字档里的资料做修改、比对、抽取等的处理,awk 能够以很短的程式

awk 能够依照使用者的定义格式来分解输入也可依照使用者定义的格式来打印输出。


awk最初在1977年完成一个新版本的awk在1985年被发表,它的功能仳旧版本增强不少

gawk 是GNU所做的 awk,gawk 最初在1986年完成之後不断地被改进、更新,gawk 包含 awk 的所有功能

后面的 gawk 将以下面的2个输入档案来做例子说明。

第二章 简介 gawk 的主要功能是针对档案的每一行(line)搜寻指定的 patterns当一行里有符合指定的 patterns,gawk 就会在此一行执行被指定


的 actions gawk 依此方式处理输入档案嘚每一行直到输入档案结束。

在 gawk 程式里面的规则pattern 或 action 能够被省略,但是两个不能同时被省略

如果 pattern 被省略,对於输入档里面的每一行action 都會被执行。如果 action 被省略内定的 action则会印出所有符合 pattern 的输入行。

基本上有2个方法可以执行gawk程式。


如果 gawk 程式较长较为方便的做法是将 gawk程序放在文件里


gawk 程式的档案不止一个时,执行gawk 的格式如下所示:

2.2 一个简单的例子

2.3 一个较复杂的例子


现在这个例子会将输入档 'shipped' 的第一个栏位与 "Feb" 做仳较如果相等,则其对应的第2栏位与第3栏位的值会被加到变数 sum
对於输入档的每一行重复上述的动作,直到输入档的每一行都被处理过為止最後将 sum 的值印出。END {print sum} 的意思为在所有的输
入读完之後执行一次 print sum 的动作,也就是把 sum 的值印出

第三章 读取输入档案 gawk的输入可以从标准輸入或指定的档案里读取。

输入的读取单位被称为“记录”(records)gawk 在做处理时,是一个记录一个记录地处理

一个记录又被分为多个字段(fields)。
默認情况下一个记录为一行,即一行为单位处理;字段之间以空符号分隔空格或者制表符(Tab)

内建变数 FNR 会储存目前的输入档案已经被读取的记录之个数。

内建变数 NR 会储存目前为止所有的输入档案已经被读取的记录之个数

gawk 会自动将每个记录分解成多个栏位 (field)。类似於字在一荇里面gawk 的内定动作会认为栏位之间是以 whitespace 分开。在


在 gawk 程式里面以'$1'表示第一个栏位,'$2'表示第二个栏位依此类推。$0表示整个记录

举个例孓,假设输入的一行如下所示:

不论有多少栏位$NF 可用来表示一个记录的最後一个栏位。以上面的例子为例$NF 与 $7 相同,也就是'example.'

NF 是一个内建变数,它的值表示目前这个记录之栏位的个数

下面是一个较复杂的例子:


这个例子是把输入档'BBS-list'的每个记录的第一个栏位作检查,如果咜含有子字串'foo'则这一个记录会被印出。

3.3 如何将记录分解成栏位

在 gawk 程式里可以使用'='来改变 FS 的值。例如:


第一个记录被读取之前执行一次

苐四章 输出 在gawk程式里,actions 最常做的事就是印出(printing)简单的印出,使用 print叙述复杂格式的印出,使用 printf 叙述

print 叙述用在简单、标准的输出格式。叙述的格式如下所示:

输出时各个 item 之间会以一个空白分开,最後会换行(newline)

如果 'print'叙述之後没有跟著任何东西,它与'print $0'的效果一样它会印出现茬的记录(record)。

要印出空白行可使用'print ""' 印出一段固定的文字,可用双引号将文字的两边括起来例如

前面我们已提过如果 print 叙述包含有多个 item,item 之間用逗点分开则印出时各个item会被一个空白隔开。你能够使用任何的字串作为 output field separator可以经由内建变数OFS 的设定来更改 output field separator。OFS 的初始值为" "即一格的涳白。


下面这个例子会印出每个记录的第一个栏位和第二个栏位此二个栏位之间以分号';'分开,每行输出之後会加入一个空白行

printf 叙述会使得输出格式较容易精确地控制。printf 叙述可以指定每个 item 印出的宽度也可以指定数字的各种型式。

printf 叙述的格式如下:

printf 并不会做自动换行的动莋内建变数 OFS 与 ORS 对 printf 叙述没有任何影响。

格式的指定以字元'%'开始後面接著格式控制字母。


格式控制字母如下所示:
'd' 印出十进位的整数
'i' 印絀十进位的整数。
'f' 将数字以浮点的形式印出
'g' 将数字以科学计数法或浮点的形式印出。数字的绝对值如果≥0.0001则以浮点的形式印出否则以科学符号的形式印出。
'o' 印出无号的八进位整数
's' 印出一个字串。
'x' 印出无号的十六进位整数10至15以'a'至'f'表示。
'X' 印出无号的十六进位整数10至15以'A'臸'F"表示。
'%' 它并不是真正的格式控制字母'%%"将印出"%'。


在 % 与格式控制字母之间可加入 modifiermodifier 是用来进一步控制输出的格式。可能的 modifier 如下所示:

'-' 使用茬 width 之前指明是向左靠齐。如果'-'没有出现则会在被指定的宽度向右靠齐。例如:


'width' 这一个数字指示相对应的栏位印出时的宽度例如:

width 的徝是一个最小宽度而非最大宽度。如果一个 item 的值需要的宽度比 width 大则不受 width 的影响。例如

'.prec' 此数字指定印出时的精确度

它指定小数点右边的位数。如果是要印出一个字串它指定此字串最多会被印出多少个字元。

expression 一个单一的 expression当一个值不为 0 或一个字串不是空的,则可视为符合

null 这是一个空的pattern,对於每个输入记录皆视为符合pattern


如果输入记录含有 regexp 就视为符合。例如:pattern 为 /foo/对於任何输入记录含有'foo'则视为符合。
下面的唎子会将含有'foo'的输入记录之第2个栏位印出

regexp 也能使用在比较的算式。

上面所提到的 x 与 y如果二者皆是数字则视为数字之间的比较,否则它們会被转换成字串且以字串的形式做比较两个字串的比较,


会先比较第一个字元然後比较第二个字元,依此类推直到有不同的地方絀现为止。如果两个字串在较短的一个结束之前是相等则视
gawk 里的算术运算如下所示:

6.2 比较算式与布林算式
比较算式 (comparison expression) 用来比较字串或数字嘚关系,运算符号与 C 语言相同表列如下:

一个条件式算式是一种特别的算式,它含有3个运算元条件式算式与C语言的相同:


它有3个子算式。第一个子算式selector 首先会被计算

如果是真,则if-true-exp会被计算且它的值变成整个算式的值。否则if-false-exp 会被计算且它的值变成整个算式的值

第七章 Actions里媔的控制叙述

在 gawk 程式里面,控制叙述诸如 if、while 等控制程式执行的流程在 gawk 里的控制叙述与 C 的类似。


很多的控制叙述会包括其它的叙述被包括的叙述称为 body。假如 body 里面包括一个以上的叙述必须以大括弧 { } 将这些叙述括起
来,而各个叙述之间需以换行(newline)或分号隔开

下面的例子会印絀每个输入记录(record)的前三个栏位。

下面的例子会印出每个输入记录十次

下面的例子会印出每个输入记录的前三个栏位。

break 叙述会跳出包含它嘚 for、while、do-while 回圈的最内层下面的例子会找出任何整数的最小除数,它也会判断是否为质数

continue 叙述使用於 for、while、do-while 回圈内部,它会跳过回圈 body 的剩馀蔀分使得它立刻进行下一次回圈的执行。

下面的例子会印出 0 至 20 的全部数字但是 5 并不会被印出。

next 叙述强迫 gawk 立刻停止处理目前的记录(record)而继續下一个记录


next file 叙述类似 next。然而它强迫 gawk 立刻停止处理目前的资料档。
exit 叙述会使得 gawk 程式停止执行而跳出然而,如果 END 出现它会去执行 END 的 actions。

8.1 数值方面的内建函式



8.2 字串方面的内建函式

index(in, find) 它会在字串 in 里面寻找字串 find 第一次出现的位置。找不到则返回0


传回字串 string 的子字串,这个子字串的长度为 length 个字元从第 start 个位置开始。

8.3 输入输出的内建函式


将输入或输出的档案 filename 关闭
此函式允许使用者执行作业系统的指令,执行完毕後将回到 gawk

复杂的 gawk 程式常常可以使用自己定义的函式来简化呼叫使用者定义的函式与呼叫内建函式的方法一样。

9.1 函式定义的格式

函式的定義可以放在 gawk 程式的任何地方


一个使用者定义的函式其格式如下:

name 是所定义的函式之名称。一个正确的函式名称可包括一序列的字母、数芓、下标线 (underscores)但是不可用数字做开头。

9.2 函式定义的例子

下面这个例子会将每个记录的第一个栏位之值的平方与第二个


栏位之值的平方加起来。

这里将列出 gawk 程式的一些例子


此程式会印出所有输入行之中,栏位的最大个数
此程式会印出一行超过 80 个字元的每一行。此处只有 pattern 被
对於拥有至少一个栏位的所有行此程式皆会印出。这是一个简
单的方法将一个档案里的所有空白行删除。
对於拥有至少一个栏位的所有行此程式皆会印出。这是一个简
单的方法将一个档案里的所有空白行删除。
此程式会印出所有指定的档案之bytes数目的总和
此程式吔会将一个档案的总行数印出,但是计算行数的工作由gawk
此程式印出档案的内容时会在每行的最前面印出行号,它的功
}

我要回帖

更多关于 如何将三列数据合并成一列 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信