linux sed uniq语法
Linux命令:sed-i解析、sed是什么、工作原理、基本语法使用、数字和正则定址、基本。。。

Linux命令:sed-i解析、sed是什么、⼯作原理、基本语法使⽤、数字和正则定址、基本。
sed 是⼀个⽐较古⽼的,功能⼗分强⼤的⽤于⽂本处理的流编辑器,加上正则表达式的⽀持,可以进⾏⼤量的复杂的⽂本编辑操作。
sed 本⾝是⼀个⾮常复杂的⼯具,有专门的书籍讲解 sed 的具体⽤法,但是个⼈觉得没有必要去学习它的每个细节,那样没有特别⼤的实际意义。
我们经常在 Dockerfile ⽂件中看到 sed -i 之类的语句,故此研究了解⼀些 sed 命令。
⼀、sed 简介1、sed 是什么 sed 全名为 stream editor,流编辑器,⽤程序的⽅式来编辑⽂本,功能相当的强⼤,可以在⼤多数操作系统中使⽤。
sed 的出现作为 grep 的继任者,与vim等编辑器不同,sed 是⼀种⾮交互式编辑器(即⽤户不必参与编辑过程),它使⽤预先设定好的编辑指令对输⼊的⽂本进⾏编辑,完成之后再输出编辑结构。
sed 基本上就是在玩正则模式匹配,所以,玩sed的⼈,正则表达式⼀般都⽐较强。
2、sed ⼯作原理 sed 会⼀次处理⼀⾏内容。
处理时,把当前处理的⾏存储在临时缓冲区中,成为"模式空间",接着⽤ sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。
接着处理下⼀⾏,这样不断重复,直到⽂件末尾。
⽂件内容并没有改变,除⾮你使⽤重定向存储输出。
3、正则表达式的匹配过程 简单描述⼀下正则表达式的匹配过程,就是拿正则表达式所表⽰的字符串去和原⽂字符串内容去匹配,直到匹配到原⽂内容字符串中的⼀个完整⼦串就表⽰匹配成功。
举个例⼦,有⼀⾏⽂件内容 "this is better desk",这⾥⽤"esk"去匹配,匹配过程是这样的:⾸先拿e去匹配⽂件⾏内容,从this开始,直到better的e,第⼀个字符匹配成功,接着s去匹配better字符e后边的t字符,没有匹配成功;然后重新拿esk中的e去和better的第⼆个t去匹配,没有成功,接着原始内容的下⼀个字符,直到desk中的e字符,逐个匹配s,k字符,到此为⽌,esk成功匹配,正则表达式匹配完毕。
Linux终端命令与日常办公办公和文档处理的命令使用方法

Linux终端命令与日常办公办公和文档处理的命令使用方法在日常办公和文档处理中,Linux终端命令的使用方法具有一定的重要性。
通过熟悉和掌握这些命令,可以提高工作的效率和准确性。
本文将介绍一些常用的Linux终端命令,并提供相应的使用方法。
一、文件操作命令1. ls命令:用于列出当前目录下的文件和目录。
使用方法:在终端中输入ls,按下回车键即可。
2. cd命令:用于切换目录。
使用方法:在终端中输入cd,接着输入目标目录的路径,按下回车键即可。
3. mkdir命令:用于创建新的目录。
使用方法:在终端中输入mkdir,接着输入目录名,按下回车键即可。
4. cp命令:用于复制文件或目录。
使用方法:在终端中输入cp,接着输入源文件或目录的路径和目标路径,按下回车键即可。
5. mv命令:用于移动文件或目录,也可用于对文件或目录重命名。
使用方法:在终端中输入mv,接着输入源文件或目录的路径和目标路径,按下回车键即可。
6. rm命令:用于删除文件或目录。
使用方法:在终端中输入rm,接着输入要删除的文件或目录的路径,按下回车键即可。
二、文本处理命令1. cat命令:用于查看文件内容。
使用方法:在终端中输入cat,接着输入文件名,按下回车键即可。
2. grep命令:用于在文件中查找指定的字符串。
使用方法:在终端中输入grep,接着输入要查找的字符串和文件名,按下回车键即可。
3. sed命令:用于对文件进行文本替换和处理。
使用方法:在终端中输入sed,接着输入替换的规则和文件名,按下回车键即可。
4. awk命令:用于在文件中查找和处理数据。
使用方法:在终端中输入awk,接着输入处理的规则和文件名,按下回车键即可。
5. sort命令:用于对文件中的行进行排序。
使用方法:在终端中输入sort,接着输入文件名,按下回车键即可。
6. uniq命令:用于去除文件中的重复行。
使用方法:在终端中输入uniq,接着输入文件名,按下回车键即可。
Linux命令高级技巧使用sed命令进行正则表达式替换和编辑

Linux命令高级技巧使用sed命令进行正则表达式替换和编辑Linux命令高级技巧:使用sed命令进行正则表达式替换和编辑sed(stream editor)是Linux命令中功能强大的文本处理工具之一,它可以通过正则表达式实现对文本的替换和编辑操作。
在本文中,我们将介绍使用sed命令进行正则表达式替换和编辑的高级技巧。
一、sed命令概述sed命令是Unix和类Unix系统中一种重要的文本处理工具,其主要用途是根据指定的规则对文本进行替换、删除、插入、选择等操作。
sed命令可以从标准输入或文件中读取数据,并将处理结果输出到标准输出或文件中。
二、使用sed进行替换操作1. 基本替换操作sed命令的基本格式是:```sed 's/old/new/' file```其中,s表示替换操作,old表示待替换的字符串,new表示替换后的字符串,file表示待处理的文件名。
2. 全局替换操作如果要对整个文本中的所有匹配项进行替换,可以使用g标志(global):```sed 's/old/new/g' file```这样可以确保将所有匹配项都替换掉。
3. 使用&符号引用匹配项在替换字符串时,可以使用&符号引用匹配到的字符串。
例如,要将文本中的所有数字替换为"number",可以使用以下命令:```sed 's/[0-9]*/number/g' file```其中,[0-9]*表示匹配一个或多个数字。
4. 引用特殊字符如果要替换的字符串中包含特殊字符,如换行符或制表符,可以使用反斜杠进行转义。
例如,要将文本中的制表符替换为一个空格,可以使用以下命令:```sed 's/\t/ /g' file```三、使用sed进行编辑操作除了替换操作,sed命令还可以进行其他编辑操作,如删除行、插入行和打印行等。
1. 删除匹配行要删除文本中匹配特定模式的行,可以使用d命令。
Linux命令高级技巧使用sort和uniq命令进行排序和去重

Linux命令高级技巧使用sort和uniq命令进行排序和去重Linux命令高级技巧:使用sort和uniq命令进行排序和去重在Linux系统中,命令行是非常重要的工具,它可以让我们以快速、高效的方式管理和操作系统。
Linux命令具有强大的功能和灵活性,其中sort和uniq命令是我们进行排序和去重操作时经常使用的工具。
sort命令用于对文本文件进行排序,并且默认按照字母顺序进行排序。
uniq命令则用于从已排序的文件或标准输入中删除重复行。
下面将详细介绍这两个命令的高级技巧用法。
一、sort命令的高级技巧1. 按照数字排序:sort命令默认按照字母顺序排序,但是如果我们想按照数字的大小进行排序,可以使用-n参数。
例如,要按照数字顺序对一个文本文件进行排序,可以使用以下命令:```sort -n filename```2. 按照逆序排序:sort命令默认是按照升序排序,如果我们需要按照降序排序,可以使用-r参数。
例如,以下命令将按照逆序对一个文本文件进行排序:```sort -r filename```3. 忽略大小写:如果我们希望在进行排序时忽略大小写,可以使用-f参数。
这样,sort命令将不区分大小写进行排序。
例如:```sort -f filename```4. 指定字段进行排序:sort命令还支持按照指定字段进行排序。
使用-k参数,我们可以指定要排序的字段和排序方式。
例如,要按照第二个字段进行升序排序,可以使用以下命令:```sort -k2 filename```二、uniq命令的高级技巧1. 去除重复行:uniq命令最常见的用途就是去除已排序文件中的重复行。
例如,要去除一个已排序文件中的重复行,可以使用以下命令:```uniq filename```2. 统计重复行:uniq命令还可以与sort命令结合使用,用来统计重复行的次数。
使用-c参数,uniq命令将在每行前面显示该行在文件中出现的次数。
sed -i的用法

"sed"是Linux/Unix下的一个常用的文本处理工具,用于对文本文件进行替换、删除、添加、查找等操作。
其中,"-i"选项表示直接修改文件内容,而不是在终端输出结果。
具体来说,"sed -i"的用法如下:```shellsed -i 's/oldstring/newstring/g' filename.txt```上述命令将打开名为filename.txt的文件,并将其中所有的"oldstring"替换为"newstring"。
这里的"g"表示全局匹配,即替换每一处出现的"oldstring"为"newstring"。
除了替换字符串外,"sed -i"还可以用于删除和添加文本行。
例如,以下命令会删除filename.txt 中所有以"oldstring"开头的行:```shellsed -i '/^oldstring/d' filename.txt```而添加文本行则可以使用以下命令,它将在filename.txt的第2行后面添加一行新的字符串"newstring":```shellsed -i '2a\newstring' filename.txt```总之,"sed -i"是一个十分强大的文本处理工具,在Linux/Unix系统中经常被用于批量处理文本文件。
但需要注意的是,在使用此命令时要小心操作,避免破坏重要数据。
linux中管道命令的作用和用法

linux中管道命令的作用和用法管道命令在Linux系统中是一种非常重要且常用的命令,它可以将一个命令的输出作为另一个命令的输入,实现命令之间的串联运行,极大地增强了命令行操作的灵活性和效率。
本文将详细介绍管道命令的作用和用法。
1.管道命令的作用:管道命令的主要作用是将一个命令的输出作为另一个命令的输入,实现两个或多个命令之间的数据传递和处理。
通过使用管道命令,我们可以实现以下几种功能:-数据传递:一个命令的输出作为另一个命令的输入,将数据从一个命令传递给另一个命令进行处理。
-数据处理:通过将多个命令组合起来,可以实现复杂的数据处理逻辑,如多个过滤器的串联使用,实现数据筛选、转换、统计等功能。
-提高效率:使用管道命令可以避免中间文件的产生,减少磁盘IO的开销,提高命令行操作的效率。
2.管道命令的基本用法:下面是几个常见的管道命令的用法示例:2.1过滤器的使用:过滤器是最常用的管道命令,它用于对输入进行筛选和处理。
以下是几个常见的过滤器及其用法:- grep: 用于在输入中指定的模式,可以实现数据的筛选和匹配。
示例:ls , grep ".txt"- sort: 用于对输入进行排序,默认按照字母序排列。
示例:ls ,sort- uniq: 用于去除连续的重复行,只保留一个。
示例:ls , uniq - head: 用于显示输入的前几行,默认显示前10行。
示例:ls ,head- tail: 用于显示输入的后几行,默认显示后10行。
示例:ls ,tail- cut: 用于提取输入的指定列,可以按照列的位置或者分隔符进行提取。
示例:ls -l , cut -f 1,22.2数据的转换和处理:通过组合使用各种命令,可以实现复杂的数据转换和处理逻辑。
以下是几个示例:- awk: 使用awk命令可以轻松地处理结构化的文本数据,可以根据指定的条件对输入进行处理和转换。
示例:ls -l , awk '{print $1}' - sed: 使用sed命令可以进行文本的替换、删除、插入等操作,对输入进行全局的文本处理。
使用sed和grep的组合技巧Linux命令高级文本处理和搜索
使用sed和grep的组合技巧Linux命令高级文本处理和搜索使用sed和grep的组合技巧-Linux命令高级文本处理和搜索在Linux系统中,文本处理和搜索是常见的任务,可以通过一些强大的工具来完成,其中最常用的就是sed和grep命令。
sed是一个流编辑器,用于对文本进行强大的替换和转换操作,而grep则用于在文本中搜索指定的模式。
本文将介绍如何使用sed和grep的组合技巧来高效地进行文本处理和搜索。
一、sed命令的基本用法sed命令可以通过一系列的编辑指令来对文本进行处理,常用的有替换、删除、插入等操作。
下面是sed命令的基本语法:sed [选项] '编辑指令' 文件名以替换操作为例,sed命令的替换格式为:sed 's/旧模式/新模式/' 文件名其中,s表示替换操作,旧模式为需要被替换的内容,新模式为替换后的内容。
下面是一个示例:假设有一个文本文件text.txt,内容如下:Hello World!这是一个示例文本文件。
我们将使用sed命令来将其中的“Hello”替换为“Hi”,命令如下:sed 's/Hello/Hi/' text.txt执行该命令后,文本文件的内容将变为:Hi World!这是一个示例文本文件。
二、grep命令的基本用法grep命令用于在文本文件中搜索指定的模式,可以根据需要进行不同的选项设置。
下面是grep命令的基本语法:grep [选项] '模式' 文件名其中,模式为需要搜索的字符串或正则表达式,选项可以根据需要进行设置。
下面是一个示例:假设有一个文本文件text.txt,内容如下:Hello World!这是一个示例文本文件。
我们将使用grep命令来搜索其中包含“Hello”的行,命令如下:grep 'Hello' text.txt执行该命令后,将输出包含“Hello”的行:Hello World!三、sed和grep的组合技巧在实际应用中,我们经常需要对文本进行复杂的处理和搜索操作。
linux uniq 列分隔符
linux uniq 列分隔符
在Linux中,uniq命令用于从排序的输入中删除重复的行。
uniq命令默认使用整行作为比较对象,但是你可以使用其他列分隔符来指定uniq命令应该如何比较行。
一种方法是使用cut命令来提取你想要的列,并将其作为uniq 命令的输入。
例如,如果你想使用制表符作为列分隔符,你可以使用cut命令来提取列,然后通过管道将其传递给uniq命令。
例如:
shell.
cut -f1 -d$'\t' input.txt | uniq.
在这个例子中,`-f1`表示我们想要提取第一列,`-d$'\t'`表示制表符是列分隔符。
然后我们将cut命令的输出通过管道传递给uniq命令。
另一种方法是使用awk命令来指定列分隔符。
例如,如果你想使用逗号作为列分隔符,你可以这样做:
shell.
awk -F',' '!seen[$1]++' input.csv.
在这个例子中,`-F','`表示我们将逗号作为列分隔符。
然后我们使用awk命令来打印第一列,并使用`!seen[$1]++`来确保只打印不重复的行。
总之,你可以使用cut命令或awk命令来指定列分隔符,并将其与uniq命令结合使用,以便根据特定列的唯一值来过滤输入。
这样可以帮助你更灵活地处理数据,而不仅仅局限于整行的比较。
Linux命令进阶使用sed进行正则表达式匹配与替换
Linux命令进阶使用sed进行正则表达式匹配与替换sed(Stream Editor)是Unix/Linux系统中一种常用的命令行文本编辑工具,它可以在对数据进行流式处理时,根据用户指定的规则进行字符串匹配与替换。
sed支持正则表达式,使得在处理文本时,更加灵活高效。
本文将介绍如何使用sed进行正则表达式匹配与替换,以及一些常见的用法和实例。
一、sed命令概述sed命令是Linux系统中的一个强大的文本处理工具,常用于从文件或者标准输入流中读取数据,并按照指定的规则进行处理。
它的基本语法为:```sed [options] 'command' file(s)```其中,options是可选的参数,command是sed的操作命令,file(s)表示要处理的文件。
sed命令可以直接在命令行中使用,也可以将命令写入一个脚本文件中进行批量处理。
二、sed命令选项sed命令有许多选项,下面介绍一些常用的选项:1. -n:只打印经过sed命令处理后的结果,不输出其他内容。
2. -i:直接修改原文件,而不是打印结果到标准输出。
3. -e:指定多个命令,用分号分隔。
4. -r:启用扩展正则表达式。
5. -f file:从指定的文件中读取sed命令。
三、sed基本操作命令1. p:打印匹配行。
2. d:删除匹配行。
3. s/pattern/replacement/g:替换匹配的文本。
4. i:在指定行之前插入文本。
5. a:在指定行之后追加文本。
四、使用sed进行正则表达式匹配与替换sed命令的最常见用法是进行字符串匹配与替换。
下面介绍一些常用的正则表达式匹配与替换操作:1. 使用sed进行简单的字符串替换假设我们有一个文件file.txt,内容如下:```Hello, World!```我们可以通过下面的命令使用sed进行简单的字符串替换:```sed 's/Hello/Hi/' file.txt```执行上述命令后,输出的结果如下:```Hi, World!```这条命令中,s表示替换操作,/Hello/表示要被替换的字符串,/Hi/表示替换后的字符串。
linux中去掉文件重复数据行的方法(去重复ip)
linux中去掉⽂件重复数据⾏的⽅法(去重复ip)⼀、去掉相邻重复的数据⾏复制代码代码如下:$cat data1.txt | uniq输出:beijingwuhanbeijingwuhan⼆、去掉所有重复的数据⾏复制代码代码如下:$cat data1.txt | sort | uniq注:只有uniq命令的话,只是把相邻的重复的数据⾏去掉。
如果先 sort 的话,就会把所有重复的数据⾏变成相邻的数据⾏,再 uniq 的话,就去掉所有重复的数据⾏了。
输出:beijingwuhan附:data1.txt复制代码代码如下:[root@syy ~]# cat data1.txtbeijingbeijingwuhanwuhanwuhanbeijingbeijingbeijingwuhanwuhan注:在过滤⽇志中的IP地址很有⽤。
Linux下删除⼤数据⽂件中部分字段重复的⾏最近写的⼀个数据采集程序⽣成了⼀个含有1千多万⾏数据的⽂件,数据由4个字段组成,按照要求需要删除第⼆个字段重复的⾏,找来找去linux下也没找到合适的⼯具,sed/gawk等流处理⼯具只能针对⼀⾏⼀⾏处理,并⽆法找到字段重复的⾏。
看来只好⾃⼰python⼀个程序了,突然想起来利⽤mysql,于是进⾏乾坤⼤挪移:1. 利⽤mysqlimport --local dbname data.txt导⼊数据到表中,表名要与⽂件名⼀致2. 执⾏下列sql语句(要求唯⼀的字段为uniqfield)复制代码代码如下:use dbname;alter table tablename add rowid int auto_increment not null;create table t select min(rowid) as rowid from tablename group by uniqfield;create table t2 select tablename .* from tablename,t where tablename.rowid= t.rowid;</p> <p>drop table tablename; rename table t2 to tablename;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux sed命令实例详解功能说明:利用script来处理文本文件。
语法:sed [-hnV][-e<script>][-f<script文件>][文本文件]补充说明:sed可依照script的指令,来处理、编辑文本文件。
参数:-e<script>或—expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或—file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或—help 显示帮助。
-n或—quiet或--silent 仅显示script处理后的结果。
-V或—version 显示版本信息。
# sed -e 's/123/1234/' a.txt将a.txt文件中所有行中的123用1234替换(-e表示命令以命令行的方式执行;参数s,表示执行替换操作)# sed -e '3,5 a4' a.txt将a.txt文件中的3行到5行之间所有行的后面添加一行内容为4的行(参数a,表示添加行,参数a后面指定添加的内容)# sed -e '1 s/12/45/' a.txt把第一行的12替换成45sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`批量处理通过grep搜索出来的所有文档,将这些文档中所有的oldstring用newstring替换(-i参数表示直接对目标文件操作)$ sed -n 's/^test/mytest/p' example.file(-n)选项和p标志一起使用表示只打印那些发生替换的行。
也就是说,如果某一行开头的test被替换成mytest,就打印它。
(^这是正则表达式中表示开头,该符号后面跟的就是开头的字符串)(参数p表示打印行)$ sed 's/^wangpan/&19850715/' example.file表示被替换换字符串被找到后,被替换的字符串通过&符号连接给出的字符串组成新字符传替换被替换的字符串,所有以wangpan开头的行都会被替换成它自已加19850715,变成wangpan19850715$ sed -n 's/\(love\)able/\1rs/p' example.filelove被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
需要将这条命令分解,s/是表示替换操作,\(love\)表示选中love字符串,\(love\)able/表示包含loveable的行,\(love\)able/\l表示love字符串标记为1,表示在替换过程中不变。
rs/表示替换的目标字符串。
这条命令的操作含义:只打印替换了的行$ sed 's#10#100#g' example.file不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。
表示把所有10替换成100。
$ sed -n '/love/,/unlove/p' example.file只打印包含love字符串行到包含unlove字符串行之间的所有行(确定行的范围就是通过逗号实现的)$ sed -n '5,/^wang/p' example只打印从第五行开始到第一个包含以wang开始的行之间的所有行$ sed '/love/,/unlove/s/$/wangpan/' example.file对于包含love字符串的行到包含unlove字符串之间的行,每行的末尾用字符串wangpan替换。
字符串$/表示以字符串结尾的行,$/表示每一行的结尾,s/$/wangpan/表示每一行的结尾添加wangpan字符串$ sed -e '11,53d' -e 's/wang/pan/' example.file(-e)选项允许在同一行里执行多条命令。
如例子所示,第一条命令删除11至53行,第二条命令用pan替换wang。
命令的执行顺序对结果有影响。
如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。
(参数d,表示删除指定的行)$ sed --expression='s/wang/pan/' --expression='/love/d' example.file一个比-e更好的命令是--expression。
它能给sed表达式赋值。
$ sed '/wangpan/r file' example.filefile里的内容被读进来,显示在与wangpan匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。
参数r,表示读出文件,后面空格紧跟文件名称$ sed -n '/test/w file' example.file在example.file中所有包含test的行都被写入file里。
参数w,表示将匹配的行写入到指定的文件file中$ sed '/^test/a\oh! My god!' example.file'oh! My god!'被追加到以test开头的行的后面,sed要求参数a后面有一个反斜杠。
$ sed '/test/i\oh! My god!' example.file'oh! My god!'被追加到包含test字符串行的前面,参数i表示添加指定内容到匹配行的前面,sed 要求参数i后面有一个反斜杠$ sed '/test/{ n; s/aa/bb/; }' example.file如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb。
参数n,表示读取匹配行的下一个输入行,用下一个命令处理新的行而不是匹配行。
Sed要求参数n后跟分号$ sed '1,10y/abcde/ABCDE/' example.file把1—10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。
参数y,表示把一个字符翻译为另外的字符(但是不用于正则表达式)$ sed -i 's/now/right now/g' test_sed_command.txt表示直接操作文件test_sed_command.txt,将文件test_sed_command.txt中所有的now用right now替换。
参数-i,表示直接操作修改文件,不输出。
$ sed '2q' test_sed_command.txt在打印完第2行后,就直接退出sed。
参数q,表示退出$ sed -e '/old/h' -e '/girl-friend/G' test_sed_command.txt首先了解参数h,拷贝匹配成功行的内容到内存中的缓冲区。
在了解参数G,获得内存缓冲区的内容,并追加到当前模板块文本的后面。
上面命令行的含义:将包含old字符串的行的内容保存在缓冲区中,然后将缓冲区的内容拿出来添加到包含girl-friend字符串行的后面。
隐含要求搜集到缓冲区的匹配行在需要添加行的前面。
$ sed -e '/test/h' -e '/wangpan/x' example.file将包含test字符串的行的内容保存在缓冲区中,然后再将缓冲区的内容替换包含wangpan字符串的行。
参数x,表示行替换操作。
隐含要求搜集到缓冲区的匹配行在需要被替换行的前面。
Linux下uniq命令的详解分类:CentOS系统管理2011-11-21 19:17 195人阅读评论(0) 收藏举报uniquniq 命令文字uniq是LINUX命令用途报告或删除文件中重复的行。
语法uniq [ -c | -d | -u ] [ -f Fields ] [ -s Characters ] [ -Fields ] [ +Characters ] [ InFile [ OutFile ] ]描述uniq 命令删除文件中的重复行。
uniq 命令读取由InFile 参数指定的标准输入或文件。
该命令首先比较相邻的行,然后除去第二行和该行的后续副本。
重复的行一定相邻。
(在发出uniq 命令之前,请使用sort 命令使所有重复行相邻。
)最后,uniq 命令将最终单独的行写入标准输出或由OutFile 参数指定的文件。
InFile 和OutFile 参数必须指定不同的文件。
输入文件必须是文本文件。
文本文件是包含组织在一行或多行中的字符的文件。
这些行的长度不能超出2048 个字节(包含所有换行字符),并且其中不能包含空字符。
缺省情况下,uniq 命令比较所有行。
如果指定了-f Fields 或-Fields 标志, uniq 命令忽略由Fields 变量指定的字段数目。
field 是一个字符串,用一个或多个<空格> 字符将它与其它字符串分隔开。
如果指定了-s Characters 或-Characters 标志, uniq 命令忽略由Characters 变量指定的字段数目。
为Fields 和Characters 变量指定的值必须是正的十进制整数。
当前本地语言环境决定了-f 标志使用的<空白> 字符以及-s 标志如何将字节解释成字符。
如果执行成功,uniq 命令退出,返回值0。
否则,命令退出返回值大于0。
标志-c 在输出行前面加上每行在输入文件中出现的次数。
-d 仅显示重复行。
-f Fields 忽略由Fields 变量指定的字段数目。
如果Fields 变量的值超过输入行中的字段数目, uniq 命令用空字符串进行比较。
这个标志和-Fields 标志是等价的。
-u 仅显示不重复的行。
-s Characters 忽略由Characters 变量指定的字符的数目。
如果Characters 变量的值超过输入行中的字符的数目, uniq 用空字符串进行比较。
如果同时指定-f 和-s 标志, uniq 命令忽略由-s Characters 标志指定的字符的数目,而从由-f Fields 标志指定的字段后开始。
这个标志和+Characters 标志是等价的。
-Fields 忽略由Fields 变量指定的字段数目。