linux删除文件重复行,linux去重命令
linux删除文件重复行,linux去重命令详细介绍
本文目录一览: 如何在电脑上查找并删除重复的文件0?
要在电脑上查找并删除重复的文件,可以按照以下步骤进行:
1. 打开文件资源管理器,转到要搜索重复文件的文件夹。
2. 选择“视图”选项卡,然后选择“详细信息”视图,以便能够看到文件的名称、大小和类型。
3. 单击“名称”列标题,以便按名称排序文件。
4. 找到重复的文件,通常是名称完全相同的文件。
5. 选择或多个重复文件,然后按下键盘上的“Shift”键并单击另一个重复文件,以选择它们之间的所有文件。
6. 右键单击所选文件,然后选择“删除”以将它们移动到回收站。
7. 右键单击回收站图标,然后选择“空回收站”,以永久删除这些文件。
另外,也可以使用一些第三方工具或应用程序来自动查找和删除重复文件。例如,“Duplicate Cleaner”、“CCleaner”和“Auslogics Duplicate File Finder”等工具可以根据文件名称、大小、日期等属性进行搜索,并允许用户选择要删除的文件。
有很多方法可以在计算机上查找和删除重复的文件,以下是其中的一些方法:1. 使用文件管理器:在Windows上,打开文件资源管理器并在搜索栏中输入“重复项”,然后按“Enter”键查找重复的文件。在Mac OS上,打开Finder窗口,选择“文件”菜单,然后选择“查找重复项”。在Linux上,可以使用命令行工具如find或fd。2. 使用重复文件查找工具:有一些第三方工具可以帮助你查找并删除重复的文件,如CCleaner、Duplicate Cleaner等。这些工具可以快速扫描计算机中的文件,并找出重复的文件。3. 手动查找:你也可以手动查找重复的文件。打开每个文件夹,比较文件的名称、大小和内容。如果有重复的文件,可以手动删除其中文件。无论采用哪种方法,删除重复文件时应谨慎操作,并确保备份重要文件。
以下是一些步骤,可帮助您在电脑上查找并删除重复的文件:1. 打开文件资源管理器并转到您想要搜索重复文件的文件夹。2. 选择“视图”选项卡,然后选择“详细信息”视图,以便能够看到文件的名称、大小和类型。3. 单击“名称”列标题,以便按名称排序文件。4. 找到重复的文件,通常是名称完全相同的文件。5. 选择或多个重复文件,然后按下键盘上的“Shift”键并单击另重复文件,以选择它们之间的所有文件。6. 右键单击所选文件,然后选择“删除”以将它们移动到回收站。7. 右键单击回收站图标,然后选择“空回收站”,以永久删除这些文件。另外,也可以使用一些第三方工具或应用程序来自动查找和删除重复文件。一些示例是“Duplicate Cleaner”、“CCleaner”和“Auslogics Duplicate File Finder”。这些工具都有简单易用的界面,它们可以根据文件名称、大小、日期等属性进行搜索,并允许用户选择要删除的文件。
Linux删除文件内重复行
第一,用sort+uniq,注意,单纯uniq是不行的。
第二,用sort+awk命令,注意,单纯awk同样不行,原因同上。
第三,用sort+sed命令,同样需要sort命令先排序。
以上原理都是上下行比对,如果中间开了几行,uniq就不生效
例如:
111
222
111
是不能正确排序的,必须是:
111
111
222
uniq才会生效,所以都需要先用sort 来排序,然后将结果输出到其他文件。
在linux配置文件里怎么一行一行删除?
用vi打开编辑,dd是删除一行,其他快捷操作有:光标控制命令命令 光标移动h或^h 向左移一个字符j或^j或^n 向下移一行k或^p 向上移一行l或空格 向右移一个字符G 移到文件的最后一行nG 移到文件的第n行w 移到下一个字的开头W 移到下一个字的开头,忽略标点符号b 移到前一个字的开头B 移到前一个字的开头,忽略标点符号L 移到屏幕的最后一行M 移到屏幕的中间一行H 移到屏幕的第一行e 移到下一个字的结尾E 移到下一个字的结尾,忽略标点符号( 移到句子的开头) 移到句子的结尾{ 移到段落的开头} 移到下一个段落的开头0或| 移到当前行的第一列n| 移到当前行的第n列^ 移到当前行的第一个非空字符$ 移到当前行的最后一个字符+或return 移到下一行的第一个字符- 移到前一行的第一个非空字符 在vi中添加文本命令 插入动作a 在光标后插入文本A 在当前行插入文本i 在光标前插入文本I 在当前行前插入文本o 在当前行的下边插入新行O 在当前行的上边插入新行:r file 读入文件file内容,并插在当前行后:nr file 读入文件file内容,并插在第n行后escape 回到命令模式^v char 插入时忽略char的指定意义,这是为了插入特殊字符 在vi中删除文本命令 删除操作x 删除光标处的字符,可以在x前加上需要删除的字符数目nx 从当前光标处往后删除n个字符X 删除光标前的字符,可以在X前加上需要删除的字符数目nX 从当前光标处往前删除n个字符dw 删至下一个字的开头ndw 从当前光标处往后删除n个字dG 删除行,直到文件结束dd 删除整行ndd 从当前行开始往后删除db 删除光标前面的字ndb 从当前行开始往前删除n字:n,md 从第m行开始往前删除n行d或d$ 从光标处删除到行尾dcursor_command 删除至光标命令处,如dG将从当产胆行删除至文件的末尾^h或backspace 插入时,删除前面的字符^w 插入时,删除前面的字 修改vi文本每个命令前面的数字表示该命令重复的次数命令 替换操作rchar 用char替换当前字符R text escape 用text替换当前字符直到换下Esc键stext escape 用text代替当前字符S或cctext escape 用text代替整行cwtext escape 将当前字改为textCtext escape 将当前行余下的改为textcG escape 修改至文件的末尾ccursor_cmd text escape 从当前位置处到光标命令位置处都改为text 在vi中查找与替换命令 查找与替换操作/text 在文件中向前查找text?text 在文件中向后查找textn 在同一方向重复查找N 在相反方向重复查找ftext 在当前行向前查找textFtext 在当前行向后查找textttext 在当前行向前查找text,并将光标定位在text的第一个字符Ttext 在当前行向后查找text,并将光标定位在text的第一个字符:set ic 查找时忽略大小写:set noic 查找时对大小写敏感:s/oldtext/newtext 用newtext替换oldtext:m,ns/oldtext/newtext 在m行通过n,用newtext替换oldtext& 重复最后的:s命令:g/text1/s/text2/text3 查找包含text1的行,用text3替换text2:g/text/command 在所有包含text的行运行command所表示的命令:v/text/command 在所有不包含text的行运行command所表示的命令 在vi中复制文本命令 复制操作yy 将当前行的内容放入临时缓冲区nyy 将n行的内容放入临时缓冲区p 将临时缓冲区中的文本放入光标后P 将临时缓冲区中的文本放入光标前dsfsd "(a-z)nyy 复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行"(a-z)ndd 删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行"(a-z)p 将名字为圆括号的可命名缓冲区的内容放入当前行后"(a-z)P 将名字为圆括号的可命名缓冲区的内容放入当前行前 在vi中撤消与重复命令 撤消操作u 撤消最后一次修改U 撤消当前行的所有修改. 重复最后一次修改, 以相反的方向重复前面的f、F、t或T查找命令; 重复前面的f、F、t或T查找命令"np 取回最后第n次的删除(缓冲区中存有一定次数的删除内容,一般为9)n 重复前面的/或?查找命令N 以相反方向重复前面的/或?命令 保存文本和退出vi命令 保存和/或退出操作:w 保存文件但不退出vi:w file 将修改保存在file中但不退出vi:wq或ZZ或:x 保存文件并退出vi:q! 不保存文件,退出vi:e! 放弃所有修改,从上次保存文件开始再编辑 vi中的选项选项 作用:set all 打印所有选项:set nooption 关闭option选项:set nu 每行前打印行号:set showmode 显示是输入模式还是替换模式:set noic 查找时忽略大小写:set list 显示制表符(^I)和行尾符号:set ts=8 为文本输入设置tab stops:set window=n 设置文本窗口显示n行 vi的状态选项 作用:.= 打印当前行的行号:= 打印文件中的行数^g 显示文件名、当前的行号、文件的总行数和文件位置的百分比:l 使用字母"l"来显示许多的特殊字符,如制表符和换行符 在文本中定位段落和放置标记选项 作用{ 在第一列插入{来定义一个段落[[ 回到段落的开头处]] 向前移到下一个段落的开头处m(a-z) 用一个字母来标记当前位置,如用mz表示标记z'(a-z) 将光标移动到指定的标记,如用'z表示移动到z 在vi中连接行选项 作用J 将下一行连接到当前行的末尾nJ 连接后面n行 光标放置与屏幕调整选项 作用H 将光标移动到屏幕的顶行nH 将光标移动到屏幕顶行下的第n行M 将光标移动到屏幕的中间L 将光标移动到屏幕的底行nL 将光标移动到屏幕底行上的第n行^e(ctrl+e) 将屏幕上滚一行^y 将屏幕下滚一行^u 将屏幕上滚半页^d 将屏幕下滚半页^b 将屏幕上滚一页^f 将屏幕下滚一页^l 重绘屏幕z-return 将当前行置为屏幕的顶行nz-return 将当前行下的第n行置为屏幕的顶行z. 将当前行置为屏幕的中央nz. 将当前行上的第n行置为屏幕的中央z- 将当前行置为屏幕的底行nz- 将当前行上的第n行置为屏幕的底行 vi中的shell转义命令选项 作用:!command 执行shell的command命令,如:!ls:!! 执行前一个shell命令:r!command 读取command命令的输入并插入,如:r!ls会先执行ls,然后读入内容:w!command 将当前已编辑文件作为command命令的标准输入并执行command命令,如:w!grep all:cd directory 将当前工作目录更改为directory所表示的目录:sh 将启动一个子shell,使用^d(ctrl+d)返回vi:so file 在shell程序file中读入和执行命令 vi中的宏与缩写(避免使用控制键和符号,不要使用字符K、V、g、q、v、*、=和功能键)选项 作用:map key command_seq 定义一个键来运行command_seq,如:map e ea,无论什么时候都可以e移到一个字的末尾来追加文本:map 在状态行显示所有已定义的宏:umap key 删除该键的宏:ab string1 string2 定义一个缩写,使得当插入string1时,用string2替换string1。当要插入文本时,键入string1然后按Esc键,系统就插入了string2:ab 显示所有缩写:una string 取消string的缩写 在vi中缩进文本选项 作用^i(ctrl+i)或tab 插入文本时,插入移动的宽度,移动宽度是事先定义好的:set ai 打开自动缩进:set sw=n 将移动宽度设置为n个字符nn>> 使n行都向右移动一个宽度,例如3>>就将接下来的三行每行都向右移动一个移动宽度
Linux下常用文本处理命令
Linux下常用文本处理命令大全
Linux下面有很多经典的非常有用的命令,其中处理文本的命令就有很多。下面就让我们一起看看这些经典的Linux文本处理命令有哪些吧。
一. sort
文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用-m选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的info页.
二. tsort
拓扑排序, 读取以空格分隔的有序对, 并且依靠输入模式进行排序.
三. uniq
这个过滤器将会删除一个已排序文件中的重复行. 这个命令经常出现在sort命令的管道后边.
四. expand, unexpand
expand命令将会把每个tab转化为一个空格. 这个命令经常用在管道中.
unexpand命令将会把每个空格转化为一个tab. 效果与expand命令相反.
五. cut
一个从文件中提取特定域的工具. 这个命令与awk中使用的print $N命令很相似, 但是更受限. 在脚本中使用cut命令会比使用awk命令来得容易一些. 最重要的选项就是-d(字段定界符)和-f(域分隔符)选项.
六. paste
将多个文件, 以每个文件一列的形式合并到一个文件中, 合并后文件中的每一列就是原来的一个文件. 与cut结合使用, 经常用于创建系统log文件.
七. join
这个命令与paste命令属于同类命令. 但是它能够完成某些特殊的目地. 这个强力工具能够以一种特殊的形式来合并两个文件, 这种特殊的形式本质上就是一个关联数据库的简单版本.
join命令只能够操作两个文件. 它可以将那些具有特定标记域(通常是一个数字标签)的行合并起来, 并且将结果输出到stdout. 被加入的文件应该事先根据标记域进行排序以便于能够正确的匹配.
八. head
把文件的头部内容打印到stdout上(默认为10行, 可以自己修改). 这个命令有一些比较有趣的选项.
九. tail
将一个文件结尾部分的内容输出到stdout中(默认为10行). 通常用来跟踪一个系统logfile的.修改情况, 如果使用-f选项的话, 这个命令将会继续显示添加到文件中的行.
十. wc
wc可以统计文件或I/O流中的”单词数量”:
十一. fold
将输入按照指定宽度进行折行. 这里有一个非常有用的选项-s, 这个选项可以使用空格进行断行(译者: 事实上只有外文才需要使用空格断行, 中文是不需要的)(请参考例子 12-23和例子 A-1).
十二. fmt
一个简单的文件格式器, 通常用在管道中, 将一个比较长的文本行输出进行”折行”.
十三. col
这个命令用来滤除标准输入的反向换行符号. 这个工具还可以将空白用等价的tab来替换. col工具最主要的应用还是从特定的文本处理工具中过滤输出, 比如groff和tbl. (译者: 主要用来将man页转化为文本.)
十四. column
列格式化工具. 通过在合适的位置插入tab, 这个过滤工具会将列类型的文本转化为”易于打印”的表格式进行输出.
十五. colrm
列删除过滤器. 这个工具将会从文件中删除指定的列(列中的字符串)并且写到文件中, 如果指定的列不存在, 那么就回到stdout. colrm 2 4
Caution: 如果这个文件包含tab和不可打印字符, 那将会引起不可预期的行为. 在这种情况下, 应该通过管道的手段使用expand和unexpand来预处理colrm.
十六. nl
计算行号过滤器. nl filename将会把filename文件的所有内容都输出到stdout上, 但是会在每个非空行的前面加上连续的行号. 如果没有filename参数, 那么就操作stdin.
nl命令的输出与cat -n非常相似, 然而, 默认情况下nl不会列出空行.
十七. pr
格式化打印过滤器. 这个命令会将文件(或stdout)分页, 将它们分成合适的小块以便于硬拷贝打印或者在屏幕上浏览. 使用这个命令的不同的参数可以完成好多任务, 比如对行和列的操作, 加入行, 设置页边, 计算行号, 添加页眉, 合并文件等等. pr命令集合了许多命令的功能, 比如nl, paste, fold, column, 和expand.
pr -o 5 –width=65 fileZZZ | more 这个命令对fileZZZ进行了比较好的分页, 并且打印到屏幕上. 文件的缩进被设置为5, 总宽度设置为65.
一个非常有用的选项-d, 强制隔行打印(与sed -G效果相同).
十八. gettext
GNU gettext包是专门用来将程序的输出翻译或者本地化为不同国家语言的工具集. 在最开始的时候仅仅支持C语言, 现在已经支持了相当数量的其它程序语言和脚本语言.
想要查看gettext程序如何在shell脚本中使用. 请参考info页.
十九. msgfmt
一个产生二进制消息目录的程序. 这个命令主要用来本地化.
二十. iconv
一个可以将文件转化为不同编码格式(字符集)的工具. 这个命令主要用来本地化.
二十一. recode
可以认为这个命令是上边iconv命令的专业版本. 这个非常灵活的并可以把整个文件都转换为不同编码格式的工具并不是Linux标准安装的一部分.
二十二. TeX, gs
TeX和Postscript都是文本标记语言, 用来对打印和格式化的视频显示进行预拷贝.
TeX是Donald Knuth精心制作的排版系统. 通常情况下, 通过编写脚本的手段来把所有的选项和参数封装起来一起传到标记语言中是一件很方便的事情.
在linux配置文件里怎么一行一行删除?
用vi打开编辑,dd是删除一行,其他快捷操作有:\x0d\x0a光标控制命令\x0d\x0a命令光标移动\x0d\x0ah或^h向左移一个字符\x0d\x0aj或^j或^n向下移一行\x0d\x0ak或^p向上移一行\x0d\x0al或空格向右移一个字符\x0d\x0aG移到文件的最后一行\x0d\x0anG移到文件的第n行\x0d\x0aw移到下一个字的开头\x0d\x0aW移到下一个字的开头,忽略标点符号\x0d\x0ab移到前一个字的开头\x0d\x0aB移到前一个字的开头,忽略标点符号\x0d\x0aL移到屏幕的最后一行\x0d\x0aM移到屏幕的中间一行\x0d\x0aH移到屏幕的第一行\x0d\x0ae移到下一个字的结尾\x0d\x0aE移到下一个字的结尾,忽略标点符号\x0d\x0a(移到句子的开头\x0d\x0a)移到句子的结尾\x0d\x0a{移到段落的开头\x0d\x0a}移到下一个段落的开头\x0d\x0a0或|移到当前行的第一列\x0d\x0an|移到当前行的第n列\x0d\x0a^移到当前行的第一个非空字符\x0d\x0a$移到当前行的最后一个字符\x0d\x0a+或return移到下一行的第一个字符\x0d\x0a-移到前一行的第一个非空字符\x0d\x0a\x0d\x0a在vi中添加文本\x0d\x0a命令插入动作\x0d\x0aa在光标后插入文本\x0d\x0aA在当前行插入文本\x0d\x0ai在光标前插入文本\x0d\x0aI在当前行前插入文本\x0d\x0ao在当前行的下边插入新行\x0d\x0aO在当前行的上边插入新行\x0d\x0a:rfile读入文件file内容,并插在当前行后\x0d\x0a:nrfile读入文件file内容,并插在第n行后\x0d\x0aescape回到命令模式\x0d\x0a^vchar插入时忽略char的指定意义,这是为了插入特殊字符\x0d\x0a\x0d\x0a在vi中删除文本\x0d\x0a命令删除操作\x0d\x0ax删除光标处的字符,可以在x前加上需要删除的字符数目\x0d\x0anx从当前光标处往后删除n个字符\x0d\x0aX删除光标前的字符,可以在X前加上需要删除的字符数目\x0d\x0anX从当前光标处往前删除n个字符\x0d\x0adw删至下一个字的开头\x0d\x0andw从当前光标处往后删除n个字\x0d\x0adG删除行,直到文件结束\x0d\x0add删除整行\x0d\x0andd从当前行开始往后删除\x0d\x0adb删除光标前面的字\x0d\x0andb从当前行开始往前删除n字\x0d\x0a:n,md从第m行开始往前删除n行\x0d\x0ad或d$从光标处删除到行尾\x0d\x0adcursor_command删除至光标命令处,如dG将从当产胆行删除至文件的末尾\x0d\x0a^h或backspace插入时,删除前面的字符\x0d\x0a^w插入时,删除前面的字\x0d\x0a\x0d\x0a修改vi文本\x0d\x0a每个命令前面的数字表示该命令重复的次数\x0d\x0a命令替换操作\x0d\x0archar用char替换当前字符\x0d\x0aRtextescape用text替换当前字符直到换下Esc键\x0d\x0astextescape用text代替当前字符\x0d\x0aS或cctextescape用text代替整行\x0d\x0acwtextescape将当前字改为text\x0d\x0aCtextescape将当前行余下的改为text\x0d\x0acGescape修改至文件的末尾\x0d\x0accursor_cmdtextescape从当前位置处到光标命令位置处都改为text\x0d\x0a\x0d\x0a在vi中查找与替换\x0d\x0a命令查找与替换操作\x0d\x0a/text在文件中向前查找text\x0d\x0a?text在文件中向后查找text\x0d\x0an在同一方向重复查找\x0d\x0aN在相反方向重复查找\x0d\x0aftext在当前行向前查找text\x0d\x0aFtext在当前行向后查找text\x0d\x0attext在当前行向前查找text,并将光标定位在text的第一个字符\x0d\x0aTtext在当前行向后查找text,并将光标定位在text的第一个字符\x0d\x0a:setic查找时忽略大小写\x0d\x0a:setnoic查找时对大小写敏感\x0d\x0a:s/oldtext/newtext用newtext替换oldtext\x0d\x0a:m,ns/oldtext/newtext在m行通过n,用newtext替换oldtext\x0d\x0a&重复最后的:s命令\x0d\x0a:g/text1/s/text2/text3查找包含text1的行,用text3替换text2\x0d\x0a:g/text/command在所有包含text的行运行command所表示的命令\x0d\x0a:v/text/command在所有不包含text的行运行command所表示的命令\x0d\x0a\x0d\x0a在vi中复制文本\x0d\x0a命令复制操作\x0d\x0ayy将当前行的内容放入临时缓冲区\x0d\x0anyy将n行的内容放入临时缓冲区\x0d\x0ap将临时缓冲区中的文本放入光标后\x0d\x0aP将临时缓冲区中的文本放入光标前\x0d\x0adsfsd"(a-z)nyy复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行\x0d\x0a"(a-z)ndd删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行\x0d\x0a"(a-z)p将名字为圆括号的可命名缓冲区的内容放入当前行后\x0d\x0a"(a-z)P将名字为圆括号的可命名缓冲区的内容放入当前行前\x0d\x0a\x0d\x0a在vi中撤消与重复\x0d\x0a命令撤消操作\x0d\x0au撤消最后一次修改\x0d\x0aU撤消当前行的所有修改\x0d\x0a.重复最后一次修改\x0d\x0a,以相反的方向重复前面的f、F、t或T查找命令\x0d\x0a;重复前面的f、F、t或T查找命令\x0d\x0a"np取回最后第n次的删除(缓冲区中存有一定次数的删除内容,一般为9)\x0d\x0an重复前面的/或?查找命令\x0d\x0aN以相反方向重复前面的/或?命令\x0d\x0a\x0d\x0a保存文本和退出vi\x0d\x0a命令保存和/或退出操作\x0d\x0a:w保存文件但不退出vi\x0d\x0a:wfile将修改保存在file中但不退出vi\x0d\x0a:wq或ZZ或:x保存文件并退出vi\x0d\x0a:q!不保存文件,退出vi\x0d\x0a:e!放弃所有修改,从上次保存文件开始再编辑\x0d\x0a\x0d\x0avi中的选项\x0d\x0a选项作用\x0d\x0a:setall打印所有选项\x0d\x0a:setnooption关闭option选项\x0d\x0a:setnu每行前打印行号\x0d\x0a:setshowmode显示是输入模式还是替换模式\x0d\x0a:setnoic查找时忽略大小写\x0d\x0a:setlist显示制表符(^I)和行尾符号\x0d\x0a:setts=8为文本输入设置tabstops\x0d\x0a:setwindow=n设置文本窗口显示n行\x0d\x0a\x0d\x0avi的状态\x0d\x0a选项作用\x0d\x0a:.=打印当前行的行号\x0d\x0a:=打印文件中的行数\x0d\x0a^g显示文件名、当前的行号、文件的总行数和文件位置的百分比\x0d\x0a:l使用字母"l"来显示许多的特殊字符,如制表符和换行符\x0d\x0a\x0d\x0a在文本中定位段落和放置标记\x0d\x0a选项作用\x0d\x0a{在第一列插入{来定义一个段落\x0d\x0a[[回到段落的开头处\x0d\x0a]]向前移到下一个段落的开头处\x0d\x0am(a-z)用一个字母来标记当前位置,如用mz表示标记z\x0d\x0a'(a-z)将光标移动到指定的标记,如用'z表示移动到z\x0d\x0a\x0d\x0a在vi中连接行\x0d\x0a选项作用\x0d\x0aJ将下一行连接到当前行的末尾\x0d\x0anJ连接后面n行\x0d\x0a\x0d\x0a光标放置与屏幕调整\x0d\x0a选项作用\x0d\x0aH将光标移动到屏幕的顶行\x0d\x0anH将光标移动到屏幕顶行下的第n行\x0d\x0aM将光标移动到屏幕的中间\x0d\x0aL将光标移动到屏幕的底行\x0d\x0anL将光标移动到屏幕底行上的第n行\x0d\x0a^e(ctrl+e)将屏幕上滚一行\x0d\x0a^y将屏幕下滚一行\x0d\x0a^u将屏幕上滚半页\x0d\x0a^d将屏幕下滚半页\x0d\x0a^b将屏幕上滚一页\x0d\x0a^f将屏幕下滚一页\x0d\x0a^l重绘屏幕\x0d\x0az-return将当前行置为屏幕的顶行\x0d\x0anz-return将当前行下的第n行置为屏幕的顶行\x0d\x0az.将当前行置为屏幕的中央\x0d\x0anz.将当前行上的第n行置为屏幕的中央\x0d\x0az-将当前行置为屏幕的底行\x0d\x0anz-将当前行上的第n行置为屏幕的底行\x0d\x0a\x0d\x0avi中的shell转义命令\x0d\x0a选项作用\x0d\x0a:!command执行shell的command命令,如:!ls\x0d\x0a:!!执行前一个shell命令\x0d\x0a:r!command读取command命令的输入并插入,如:r!ls会先执行ls,然后读入内容\x0d\x0a:w!command将当前已编辑文件作为command命令的标准输入并执行command命令,如:w!grepall\x0d\x0a:cddirectory将当前工作目录更改为directory所表示的目录\x0d\x0a:sh将启动一个子shell,使用^d(ctrl+d)返回vi\x0d\x0a:sofile在shell程序file中读入和执行命令\x0d\x0a\x0d\x0avi中的宏与缩写\x0d\x0a(避免使用控制键和符号,不要使用字符K、V、g、q、v、*、=和功能键)\x0d\x0a选项作用\x0d\x0a:mapkeycommand_seq定义一个键来运行command_seq,如:mapeea,无论什么时候都可以e移到一个字的末尾来追加文本\x0d\x0a:map在状态行显示所有已定义的宏\x0d\x0a:umapkey删除该键的宏\x0d\x0a:abstring1string2定义一个缩写,使得当插入string1时,用string2替换string1。当要插入文本时,键入string1然后按Esc键,系统就插入了string2\x0d\x0a:ab显示所有缩写\x0d\x0a:unastring取消string的缩写\x0d\x0a\x0d\x0a在vi中缩进文本\x0d\x0a选项作用\x0d\x0a^i(ctrl+i)或tab插入文本时,插入移动的宽度,移动宽度是事先定义好的\x0d\x0a:setai打开自动缩进\x0d\x0a:setsw=n将移动宽度设置为n个字符\x0d\x0an>使n行都向右移动一个宽度,例如3>>就将接下来的三行每行都向右移动一个移动宽度
linux命令uniq
看了你的文件,uniq的结果是正确的
你要把你的文件内容排序,uniq查找的时候是找的连续重复,隔行重复是不认的
sort uniq.txt | uniq -d
或者sort -u uniq.txt 直接输出你要的内容
uniq 命令
文字
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 仅显示重复行。
-u 仅显示不重复的行。
-f Fields 忽略由 Fields 变量指定的字段数目。如果 Fields 变量的值超过输入行中的字段数目, uniq 命令用空字符串进行比较。这个标志和 -Fields 标志是等价的。
-s Characters
忽略由 Characters 变量指定的字符的数目。如果 Characters 变量的值超过输入行中的字符的数目, uniq
用空字符串进行比较。如果同时指定 -f 和 -s 标志, uniq 命令忽略由 -s Characters 标志指定的字符的数目,而从由 -f
Fields 标志指定的字段后开始。 这个标志和 +Characters 标志是等价的。
-Fields 忽略由 Fields 变量指定的字段数目。这个标志和 -f Fields 标志是等价的。
+Characters
忽略由 Characters 变量指定的字符的数目。如果同时指定 - Fields 和 +Characters 标志, uniq 命令忽略由
+Characters 标志指定的字符数目,并从由 -Fields 标志指定的字段后开始。 这个标志和 -s Characters
标志是等价的。
- c 显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u和- d选项。
- d 只显示重复行 。
- u 只显示文件中不重复的各行 。
- n 前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。
+ n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。
- f n 与- n相同,这里n是字段数。
- s n 与+n相同,这里n是字符数。
退出状态
该命令返回以下退出值:
0 命令运行成功。
>0 发生错误。
补充
文件经过处理后在它的输出文件中可能会出现重复的行。例如,使用cat命令将两个文件合并后,再使用sort命令进行排序,就可能出现重复行。这时可以使用uniq命令将这些重复行从输出文件中删除,只留下每条记录的唯一样
示例
要删除名为 fruit 文件中的重复行并将其保存到一个名为 newfruit 的文件中,输入:
uniq fruit newfruit
如果 fruit 文件包含下列行:
apples
apples
peaches
pears
bananas
cherries
cherries
则在您运行uniq 命令后 newfruit 文件将包含下列行:
apples
peaches
pears
bananas
cherries
文件/usr/bin/uniq 包含 uniq 命令。
# uniq -c 的用法,例如:
harley
casely
weedly
harley
linda
#cut -c 1-8 | sort | uniq -c > result.txt
1 casely
2 harley
1 linda
1 weekly
1. 显示文件example中不重复的行。
uniq - u example
2. 显示文件example中不重复的行,从第2个字段的第2个字符开始做比较。
uniq - u - 1 +1 example
空白>
空格>
linux去重命令
linux去重命令是什么呢?
在介绍uniq命令之前,我们先来新建在下面的案例中需要用到的文件/tmp/uniq.txt,内容如下
默认情况下uniq只会检索相邻的重复数据从而去重。在/tmp/uniq.txt中虽然“onmpw web site” 有三条,但是其中一条是和其他两条不相邻的,所以只去重了一条,同理“error php function”也是这种情况。
鉴于以上的检索机制,所以uniq一般情况下要和sort命令一块儿使用。
复制代码
# sort 1.txt | uniq
alpha css web
cat linux command
error php function
hello world
onmpw web site
recruise page site
repeat no data
wello web site
复制代码
现在再看是不是所有的重复项都已经经过去重处理了。
好了,小试牛刀一把以后,下面我们开始对uniq命令的选项进行简单的介绍。
-c 统计每一行数据的重复次数
复制代码
sort 1.txt | uniq -c
1 alpha css web
1 cat linux command
2 error php function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
复制代码
我们看 “error php function”出现了两次,“onmpw web site”出现了三次。其余的都没有重复项所以为1。
-i 忽略大小写
在1.txt中添加一行数据 “Error PHP function”
复制代码
cat 1.txt
alpha css web
cat linux command
error php function
hello world
onmpw web site
onmpw web site
wello web site
Error PHP function
recruise page site
error php function
repeat no data
onmpw web site
复制代码
复制代码
sort 1.txt | uniq –c
1 alpha css web
1 cat linux command
2 error php function
1 Error PHP function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
复制代码
我们看结果,uniq默认是区分大小写的。使用-i可以忽略掉大小写问题
复制代码
sort 1.txt | uniq –c –i
1 alpha css web
1 cat linux command
3 error php function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
复制代码
现在再看是不是大小写已经忽略掉了。
-u 只输出没有重复的数据
复制代码
sort 1.txt | uniq –iu
alpha css web
cat linux command
hello world
recruise page site
repeat no data
wello web site
复制代码
看到没,结果中的“error php function”和“onmpw web site”都没有被输出。
-w N 表示从第一个字符开始只检索N个字符来判重。
复制代码
sort 1.txt | uniq –iw 2
alpha css web
cat linux command
error php function
hello world
onmpw web site
recruise page site
wello web site
复制代码
这里我们让uniq只对前两个字符进行检索,recruit 和 repeat前两个字符都是re,所以这两行也被认为是重复的。
-f N 表示略过前面N个字段,从第N+1个字段开始检索重复数据。以空格符或者tab键为分隔符。
复制代码
sort 1.txt | uniq –icf 2
1 alpha css web
1 cat linux command
3 error php function
1 hello world
4 onmpw web site
1 repeat no data
1 wello web site
复制代码
我们在结果中可以看到,这是略过前面的2个字段,从第三个字段开始判重的。“recruise page site” 和 “onmpw web site”的第三个字段相同,所以被认为是相同的数据。但是我们看到,“wello web site”和“onmpw web site”不但第三个字段相同,第二个也相同。那为什么它不被计入“onmpw web site”的重复数据中呢。对于这个问题就要回到前面说的,uniq只检测相邻的数据是否是重复的。
要解决这个问题还需要在sort命令上着手。还记得sort命令的-k选项吗,没错,我们就用它来解决。
复制代码
sort –k 2 1.txt | uniq –icf 2
1 alpha css web
1 cat linux command
1 repeat no data
1 recruise page site
3 error php function
4 onmpw web site
1 hello world
复制代码
我们看,是不是解决了。
-s N表示略过前面N个字符,关于这个选项的例子我们这里就不再举了,该选项和-f N的用法差不多。只不过-f N是略过前面N个字段;-s是略过前面N个字符。
-d 只输出有重复项的第一条的数据。
sort 1.txt | uniq -idw 2
repeat no data
error php function
onmpw web site
结果只有这三条。为什么会有“repeat no data”这条数据,这里注意-w 2的应用。
-D 对于重复项全部输出
复制代码
sort 1.txt | uniq –iDw 2
repeat no data
recruise page site
error php function
error php function
Error PHP function
onmpw web site
onmpw web site
onmpw web site
复制代码
好了,关于uniq的选项的所有常用的命令已经都介绍完了。关于uniq更详细的信息可以使用命令info uniq。
linux重启命令是:
1、在命令行中输入: shutdown -r now : 表示现在重启计算机,按下回车便会进行重启。
2、另一种重启方式就是输入: reboot 也表示重启,一样会进行重启。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
利用Linux命令行进行文本按行去重并按重复次数排序
利用linux命令行进行文本按行去重并按重复次数排序linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能。本文这里举例说明如何利用linux命令行进行文本按行去重并按重复次数排序。主要用到的命令有sort,uniq和cut。其中,sort主要功能是排序,uniq主要功能是实现相邻文本行的去重,cut可以从文本行中提取相应的文本列(简单地说,就是按列操作文本行)。用于演示的测试文件内容如下:[plain]Hello
World.
Apple
and
Nokia.
Hello
World.
I
wanna
buy
an
Apple
device.
The
Iphone
of
Apple
company.
Hello
World.
The
Iphone
of
Apple
company.
My
name
is
Friendfish.
Hello
World.
Apple
and
Nokia.
实现命令及过程如下:[plain]1、文本行去重
(1)排序
由于uniq命令只能对相邻行进行去重复操作,所以在进行去重前,先要对文本行进行排序,使重复行集中到一起。
$
sort
test.txt
Apple
and
Nokia.
Apple
and
Nokia.
Hello
World.
Hello
World.
Hello
World.
Hello
World.
I
wanna
buy
an
Apple
device.
My
name
is
Friendfish.
The
Iphone
of
Apple
company.
The
Iphone
of
Apple
company.
(2)去掉相邻的重复行
$
sort
test.txt
|
uniq
Apple
and
Nokia.
Hello
World.
I
wanna
buy
an
Apple
device.
My
name
is
Friendfish.
The
Iphone
of
Apple
company.
2、文本行去重并按重复次数排序
(1)首先,对文本行进行去重并统计重复次数(uniq命令加-c选项可以实现对重复次数进行统计。)。
$
sort
test.txt
|
uniq
-c
2
Apple
and
Nokia.
4
Hello
World.
1
I
wanna
buy
an
Apple
device.
1
My
name
is
Friendfish.
2
The
Iphone
of
Apple
company.
(2)对文本行按重复次数进行排序。
sort
-n可以识别每行开头的数字,并按其大小对文本行进行排序。默认是按升序排列,如果想要按降序要加-r选项(sort
-rn)。
$
sort
test.txt
|
uniq
-c
|
sort
-rn
4
Hello
World.
2
The
Iphone
of
Apple
company.
2
Apple
and
Nokia.
1
My
name
is
Friendfish.
1
I
wanna
buy
an
Apple
device.
(3)每行前面的删除重复次数。
cut命令可以按列操作文本行。可以看出前面的重复次数占8个字符,因此,可以用命令cut
-c
9-
取出每行第9个及其以后的字符。
$
sort
test.txt
|
uniq
-c
|
sort
-rn
|
cut
-c
9-
Hello
World.
The
Iphone
of
Apple
company.
Apple
and
Nokia.
My
name
is
Friendfish.
I
wanna
buy
an
Apple
device.
下面附带说一下cut命令的使用,用法如下:[plain]cut
-b
list
[-n]
[file
...]
cut
-c
list
[file
...]
cut
-f
list
[-d
delim][-s][file
...]
上面的-b、-c、-f分别表示字节、字符、字段(即byte、character、field);
list表示-b、-c、-f操作范围,-n常常表示具体数字;
file表示的自然是要操作的文本文件的名称;
delim(英文全写:delimiter)表示分隔符,默认情况下为TAB;
-s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)
三种方式中,表示从指定的范围中提取字节(-b)、或字符(-c)、或字段(-f)。
范围的表示方法:
n
只有第n项
n-
从第n项一直到行尾
n-m
从第n项到第m项(包括m)
-m
从一行的开始到第m项(包括m)
-
从一行的开始到结束的所有项
在写这篇文章的时候,用到了vim的大小写转化的快捷键:gu变小写,gU变大写。结合ctrl+v能够将一片文字中的字符进行大小写转换,非常好用。
删除文件夹中所有文件的linux命令(创建和删除文件和文件夹的linux命令的详细解释)
我今天学了几个命令,它们是创建和删除文件和文件夹。在linux中,文件夹是目录。这里 这是我学到的。创建文件夹一、mkdir命令使用权限所有用户都可以在终端中使用mkdir命令在有权限的文件夹中创建文件夹或目录。二、mkdir命令使用格式格式:mkdirDirName三、mkdir命令功能 mkdir命令可用于在指定位置创建以DirName命名的文件夹或目录。想要创建文件夹或目录的用户必须对所创建文件夹的父文件夹具有写权限。此外,创建的文件夹不能与其父目录中的文件名同名,即不能在同一目录中同名。四、mkdir命令选项说明命令中的【选项】一般有以下两种:-m用于设置对新建目录的访问权限,也可以用chmod命令设置。-p在需要时创建一个上级文件夹。如果文件夹已经存在,则不会被视为错误。五、mkdir命令使用举例示例1:创建一个名为 quot演示 quot在桌面下。使用以下命令。Mkdir桌面/演示示例2:创建一个名为 quot演示 quot,并为该文件夹分配权限。权限是123。Mkdir 123桌面/演示删除文件夹: 一、rm命令使用权限所有用户都可以在终端使用rm命令删除目录。二、rm命令使用格式格式:rm 目录名三、rm命令功能删除文件和目录。四、rm命令选项说明命令中的【选项】一般有以下几种:-我在删除前要求一一确认。-f即使原文件属性设置为未读,也会直接删除,不需要一一确认。-r逐个删除目录和以下文件。五、rm命令使用举例例1:删除所有C语言程序文档;删除前逐一要求确认。rm -i *。c例2:删除完成的子目录以及子目录中的所有文件。rm -r完成注意:linux中没有回收站。使用rm命令时,必须小心。删除后,您可以 无法挽回。创建文件一、进入vi的命令 vi filename:打开或创建一个新文件,并将光标放在第一行的开头。Vifilename:打开文件,将光标放在第n行的开头。Vi filename:打开文件,将光标放在最后一行的顶部。Vi /pattern filename:打开文件,将光标放在与模式匹配的第一个字符串上。Vi -r filename:在使用Vi进行最后一次编辑时,系统崩溃。恢复文件名。Vi文件名文件名:打开多个文件,依次编辑。二、移动光标类命令三、屏幕翻滚类命令 Ctrl u:将屏幕转到文件的第一部分。Ctrl:将屏幕转到文件末尾的一半Ctrl:将一个屏幕翻转到文件的末尾ctrl+b;将一个屏幕转到文件顶部。Nz:将第n行滚动到屏幕顶部,如果没有指定n,则将当前行滚动到屏幕顶部。四、插入文本类命令 i:在光标前I:在当前行的开头答:光标后面答:在当前行的末尾o:在当前行下创建一个新行。o:在当前行之上创建一个新行。r:替换当前字符r:替换当前字符和后续字符,直到按下ESC键。s:从当前光标位置开始,用输入文本替换指定数量的字符。s:删除指定数量的行并用输入的文本替换它们。Ncw或nCW:修改指定的字数。NCC:修改指定的行数。五、删除命令 ndw或ndw:删除光标处和光标后的n-1个单词。Do:删除到行首D$:删除到行尾Nd:删除当前行和后面的n-1行。或者x:删除一个字符,光标后x,光标前x。Ctrl u:删除在输入模式下输入的文本。六、搜索及替换命令 /pattern:从光标的开头到文件的结尾搜索模式。?模式:从光标开始到文件开始搜索模式。n:沿相同方向重复最后一个搜索命令。n:以相反的方向重复最后一个搜索命令:S/p1/p2/g:用p2替换当前行中的所有p1:n2s N1/p1/p2/g:用p2替换N1到n2行中的所有P1:G/p1/s//p2/g:用p2替换文件中的所有p1。七、vi命令使用举例示例1:创建文件a.txtvi a.txt大家好!:wq //退出时直接输入:wq,你会发现你可以 出口。退出方式是:编辑完成后按ESC,然后回车:q退出;还有:wq表示保存退出,感叹号表示强制。文件修改时间【触摸】一、touch命令使用权限所有用户都可以在终端使用触摸命令。二、touch命令使用格式格式:触摸或触摸YY]]file 1)三、touch命令功能 touch fileA,如果fileA存在,使用touch命令更改该文件或目录的日期和时间,包括访问时间和更改时间;如果fileA不存在,touch命令将在当前目录下创建一个新的空白文件fileA。注意:使用touch命令更改文件或目录的日期和时间,包括访问时间和更改时间。文件的时间属性包括文件的最后访问时间、最后修改时间和文件在磁盘上的最后修改时间。stat命令显示了三个时间属性。四、touch命令选项说明 a更改档案的阅读时间记录。m更改文件的修改时间记录。如果C目标文件不存在,将不会创建新文件。它与不创建具有相同的效果。f不使用,但为了与其他unix系统兼容而保留。r使用参考文件的时间记录与file具有相同的效果。d设置时间和日期可以使用各种格式。t将文件的时间记录设置为与date命令相同的格式。YY。SS],CC是年数的前两位,即 quot多少个世纪 quot;YY是年数的最后两位数,即一个世纪的年数。如果没有给出CC的值,linux中的touch command参数会将CCYY的年数限制为19692068。MM是月数,DD是天数,hh是小时数,MM是分钟数。SS是秒数。在这里,秒的设定范围是061,以便可以处理闰秒。由这些数字组成的时间是由环境变量TZ指定的时区中的时间。由于制度的限制,早于1970年1月1日的时间是错误的。No-create不创建新文件。帮助列出了指令格式。version列出版本消息。五、touch命令使用举例示例1:更新file1.txt的访问和修改时间触摸file1.txt示例2:如果file1.txt不存在,则不要创建文件touch -c file1.txt例3:用与ref文件touch-r reffile1.txt相同的时间戳更新file1.txt。示例4:将文件的时间戳设置为2011年5月18日9: 45: 10。ls -l文件1.txttouch -t 1105190945.10 file1.txt创建新文件时,可以使用touch命令创建空文件,而vi命令可以直接编辑文件内容并保存。linux中很少使用Touch命令。个人比较喜欢vi命令,可以直接编辑文档。那 今天就到这里 的研究。每天进步一点点。王者之心2点击试玩