awk中的输入分隔符

您所在的位置:网站首页 单个制表符怎么设置 awk中的输入分隔符

awk中的输入分隔符

2024-07-12 19:36:46| 来源: 网络整理| 查看: 265

awk或gawk中可以通过-F参数或者内置变量FS指定输入内容的分隔符,默认的分隔符为空格、制表符、换行符等空白字符。

下面详细介绍下指定不同类型的字符作为分隔符时的使用方法。

1. 使用默认分隔符或指定单个字符作为分隔符

若要将一个特殊字符,例如\、、(、)、\n、\t、&、;、'、"、管道符、空格或反引号等在shell中有特殊意义的字符作为分隔符,那么必须将其使用双引号或者单引号包裹起来

例如下面这个例子,指定>为字段分隔符,如果不使用单引号或双引号包裹,将会报错,因为>被当作了重定向的命令:

$ echo '100>89>43'| awk -F > '{ print $1,$2,$3}' awk: field separator FS is empty awk: no program given

使用单引号或者双引号将其包裹后,则可以正确输出

$ echo '100>89>43'| awk -F ">" '{ print $1,$2,$3}' 100 89 43

例如,对于下面这个文本文档list.txt,其内容如下,每行中的各个字段之间使用制表符分隔:

jason 33 male cherry 24 female alex 27 male

要打印出每一行的姓名,可是使用不加-F参数的awk命令或者指定分隔符为\t或空格

$ awk '{ print $1}' list.txt jason cherry alex $ $ awk -F '\t' '{ print $1}' list.txt jason cherry alex $ $ awk -F " " '{ print $1}' list.txt jason cherry alex 2. 指定多个字符作为分隔符

例如,想要将如下字符串中的’abc’这个字符串指定为一个分隔符

123abc456abc789abc 可以使用如下的命令

$ echo 123abc456abc789abc|awk -F 'abc' '{ print $1,$2,$3}' 123 456 789

如果指定多个字符作为一个整体作为一个分隔符,那么,其中每出现一个如下的特殊字符,就需要使用两个或者两个以上的\对该特殊字符进行转义:

$、^、*、(、)、[、]、?、.、|

例如,对于如下的字符串

123$.456$.789

要将$.作为一个分隔符,如果不对$进行转义,那么将得不到想要的结果

$ echo '123$.456$.789'|awk -F '$.' '{print $1,$2,$3}' 123$.456$.789

要得到正确的结果,可以使用如下的命令

$ echo '123$.456$.789'|awk -F '\\$.' '{print $1,$2,$3}' 123 456 789

如果将上例中的点号.换成另外一个特殊字符,例如管道符\,如下所示:

123$|456$|789

如果要只打印出123, 456, 789,那么需要对其中的$和|都使用两个或两个以上的\进行转义

$ echo '123$|456$|789'|awk -F '\\$\\|' '{print $1,$2,$3}' 123 456 789 3. 同时指定多个分隔符

有时候,可能需要使用多个不同的分隔符一次性将文本中行的内容进行分隔,例如下面这个文档ssh.txt

ssh:[email protected] ssh:[email protected] ssh:[email protected]

我们可以使用两次awk -F命令,每次分别指定一个分隔符来进行操作,但是这样太麻烦,还有更简单的方法,即一次指定多个分隔符。

要一次指定多个分隔符,需要将分隔符用中括号[]包裹起来,如果多个分隔符中有至少一个特殊字符,那么还需要在中括号外加上双引号或者单引号,并且使用两个或两个以上的\将其进行转义

$、^、(、)、[、]、?、.、|

要对上述的文件内容进行操作,可以使用如下命令

$ awk -F [:@] '{ print $2, $3 }' ssh.txt user1 192.168.1.10 user2 192.168.1.11 user3 192.168.1.12

将上述文件中的冒号:和@换为^和|,文件内容变为

ssh^user1|192.168.1.10 ssh:user2|192.168.1.11 ssh:user3|192.168.1.12

如果要打印出同样的内容,需要使用如下的命令

$ awk -F '[\\^\\|]' '{ print $1,$2,$3}' ssh.txt user1 192.168.1.10 user2 192.168.1.11 user3 192.168.1.12

对于内容如下所示的文本文件name.txt

george[walker]bush william[jefferson]clinton

如果要打印出由分隔符[和]分隔的三段数据,即可以分别使用两个或两个以上的\对[和]进行转义,如下所示:

$ awk -F '[\\[\\]]' '{ print $1,$2,$3}' name.txt george walker bush william jefferson clinton

也可以使用如下的方法

$ awk -F '[][]' '{ print $1,$2,$3}' name.txt george walker bush william jefferson clinton


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭