linux 查看字符(linux打开软件命令)
linux怎么看文件的字符集编码
在Linux中查看文件编码可以通过以下几种方式:1.在Vim中可以直接查看文件编码:setfileencoding,即可显示文件编码格式。2.enca(如果你的系统中没有安装这个命令,可以用sudoyuminstall-yenca安装)查看文件编码
下面介绍一下,在Linux中如何查看文件的编码及如何进行对文件进行编码转换。
一,查看文件编码:在Linux中查看文件编码可以通过以下几种方式:
1.在Vim中可以直接查看文件编码:setfileencoding即可显示文件编码格式。如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在~/.vimrc文件中添加以下内容:setencoding=utf-8fileencodings=ucs-bom,utf-8,cp936这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。
2.enca(如果你的系统中没有安装这个命令,可以用sudoyuminstall-yenca安装)查看文件编码#36;encafilenamefilename:Universaltransformationformat8bits;UTF-8CRLFlineterminators需要说明一点的是,enca对某些GBK编码的文件识别的不是很好,识别时会出现:Unrecognizedencoding
二,文件编码转换
1.在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式:setfileencoding=utf-82.iconv转换,iconv的命令格式如下:输入/输出格式规范:-f,--from-code=名称原始文本编码-t,--to-code=名称输出编码信息:www.Svn8.Com-l,--list列举所有已知的字符集输出控制:-c从输出中忽略无效的字符-o,--output=FILE输出文件Svn8.Com-s,--silent关闭警告--verbose打印进度信息-?,--help给出该系统求助列表--usage给出简要的用法信息-V,--version打印程序版本号例子:iconv-futf-8-tgb2312aaa.txtbbb.txt这个命令读取aaa.txt文件,从utf-8编码转换为gb2312编码,其输出定向到bbb.txt文件。iconv-fencoding-tencodinginputfile比如将一个UTF-8编码的文件转换成GBK编码iconv-fGBK-tUTF-8file1-ofile2
3.enconv转换文件编码比如要将一个GBK编码的文件转换成UTF-8编码,操作如下enconv-Lzh_CN-xUTF-8filename
linux比较字符串相等linux比较字符串
shell中如何比较两字符串是否相等?
比较两个字符串是否相等的办法是:
if;then
这里的关键有几点:
1使用单个等号
2注意到等号两边各有一个空格:这是unixshell的要求
3注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x=testx,显然是不相等的。而如果没有这个x,表达式就会报错:
-ne不等于,如:if
-gt大于,如:if
-ge大于等于,如:if
-lt小于,如:if
-le小于等于,如:if
大于(需要双括号),如:(("$a">"$b"))
>=大于等于(需要双括号),如:(("$a">="$b"))
小数据比较可使用AWK
字符串比较
=等于,如:if
==等于,如:if,与=等价
注意:==的功能在]和中的行为是不同的,如下:
1]#如果$a以"z"开头(模式匹配)那么将为true
2]#如果$a等于z*(字符匹配),那么结果为true
3
4#Fileglobbing和wordsplitting将会发生
5#如果$a等于z*(字符匹配),那么结果为true
一点解释,关于Fileglobbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.
但是fileglobbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.
!=不等于,如:if
这个操作符将在]结构中使用模式匹配.
大于,在ASCII字母顺序下.如:
if]
if
注意:在结构中">"需要被转义.
具体参考Example26-11来查看这个操作符应用的例子.
-z字符串为"null".就是长度为0.
-n字符串不为"null"
不区分大小写如何比较shell脚本中的字符串?
方法一:你可以将两个字符串统统转成大写(或小写),再比较#!/bin/bashxxx=Tempyyy=tempx_tmp=$(echo$xxx|tr
)y_tmp=$(echo$yyy|tr
)if;thenechoPASSelseechoFAILfi优点:通用方法二:用expr的话,得这样:xxx=Tempif$`-ne0]thenechoPASSelseechoFAILfi优点:高效,但是限制为特定字符序列
如何比较两个字符串的大小?
字符串是由字符组成的数组。所以比较字符串的大小就是从从左到右比较数组中每一字符的大小。
假设两个字符串较短字符串的长度为N,那么在一个长度为N的循环中,每次循环都比较两个字符串数组当前下标对应的字符——如果第一个字符小于第二个,那么比较终止,第一个字符串小于第二个字符串。同样的,如果第一个字符大于第二个字符,那么第一个字符串就大于第二个字符串。只有在两个字符相等的情况下,字符数组下标加1,进行数组中下一个字符的比较。这种比较只有在两个字符串长度相等并且每一个字符都相等的情况下两个字符串才相等。
字符串怎么比较大小?
1.在比较时,设置一个计数器,从零开始,一直循环到最短的那个字符结束,一位一位进行比较。
2.如果字符串1的第n位的ASCII码值等于字符串2的第n位的ASCII码值则继续比较下一位。
3.如果字符串1的第n位的ASCII码值大于字符串2的第n位的ASCII码值则输出结果:1,表示字符串1>字符串2。
4.如果字符串1的第n位的ASCII码值小于字符串2的第n位的ASCII码值则输出结果:-1表示字符串1字符串2。
5.如果每一位的ASCII码值都相等,而且长度相同,则输出结果:0表示字符串1==字符串2。
对两个字符串进行比较时,要注意以下几点:
1.两个不同长度的字符串进行比较时,不是长的字符串就一定”大”。如A$一”ABCE”,B$一”ABCDEF”。对A$与B$进行比较时,A$的第4个字符是”E”,B$的第4个字符是”D”,而”D””E”,所以B$>A$。尽管B$比A$长。2.当字符串有空格时,空格也参加比较。如A$一”t-一ABOOK”u(表示空格),B$一”A—BOOK”,显示A$>B$。3.大写字母和小写字母的ASCII代码值是有区别的,所以,”yes”>”YEs”。4.当字符串全部用英文字母的大写(或小写)组成时,字符串的大小顺序和它们在字典中的顺序相同。5.由汉字组成的字符串可以参加比较。如”李红””王军”。它们的大小实际是由其拼音构成的字符串的大小来决定的。上例即:”LIHONG””WANGJUN”。
Linux中vi的查找、替换、删除操作
vi查找替换命令详解
一、查找查找命令/patternEnter:向下查找pattern匹配字符串?patternEnter:向上查找pattern匹配字符串使用了查找命令之后,使用如下两个键快速查找:n:按照同一方向继续查找N:按照反方向查找字符串匹配pattern是需要匹配的字符串,例如:
1:/abcEnter #查找abc2:/ abc Enter #查找abc单词(注意前后的空格)
除此之外,pattern还可以使用一些特殊字符,包括(/、^、$、*、.),其中前三个这两个是vi与vim通用的,“/”为转义字符。
1:/^abcEnter #查找以abc开始的行 2:/test$Enter #查找以abc结束的行 3://^testEnter #查找^tabc字符串
二、替换基本替换
1::s/vivian/sky/ #替换当前行第一个 vivian为 sky2::s/vivian/sky/g #替换当前行所有 vivian为 sky3::n,$s/vivian/sky/ #替换第 n行开始到最后一行中每一行的第一个 vivian为 sky4::n,$s/vivian/sky/g #替换第 n行开始到最后一行中每一行所有 vivian为 sky5:(n为数字,若 n为.,表示从当前行开始到最后一行)6: 7::%s/vivian/sky/ #(等同于:g/vivian/s//sky/)替换每一行的第一个 vivian为 sky8::%s/vivian/sky/g #(等同于:g/vivian/s//sky/g)替换每一行中所有 vivian为 sky
可以使用#或+作为分隔符,此时中间出现的/不会作为分隔符
1::s#vivian/#sky/# 替换当前行第一个 vivian/为 sky/2::%s+/oradata/apras/+/user01/apras1+(3:使用+来替换/):/oradata/apras/替换成/user01/apras1/
删除文本中的^M问题描述:对于换行,window下用回车换行(0A0D)来表示,linux下是回车(0A)来表示。这样,将window上的文件拷到unix上用时,总会有个^M,请写个用在unix下的过滤windows文件的换行符(0D)的shell或c程序。使用命令:cat filename1| tr-d“^V^M” newfile;使用命令:sed-e“s/^V^M//” filename outputfilename需要注意的是在1、2两种方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。在vi中处理:首先使用vi打开文件,然后按ESC键,接着输入命令:
1::%s/^V^M//2::%s/^M$//g
如果上述方法无用,则正确的解决办法是:
1: tr-d“/r” src dest2: tr-d“/015″ dest3: 4: strings AB
其它用法
1::s/str1/str2/ #用字符串 str2替换行中首次出现的字符串 str12::s/str1/str2/g #用字符串 str2替换行中所有出现的字符串 str13::.,$ s/str1/str2/g #用字符串 str2替换正文当前行到末尾所有出现的字符串 str14::1,$ s/str1/str2/g #用字符串 str2替换正文中所有出现的字符串 str15::g/str1/s//str2/g #功能同上
从上述替换命令可以看到:g放在命令末尾,表示对指定行的搜索字符串的每次出现进行替换;不加 g,表示只对指定行的搜索字符串的首次出现进行替换;g放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。也就是说命令的开始可以添加影响的行,如果为g表示对所有行;命令的结尾可以使用g来表示是否对每一行的所有字符串都有影响。三、简单的vim正则表达式规则在vim中有四种表达式规则:magic(/m):除了$.*^之外其他元字符都要加反斜杠nomagic(/M):除了$^之外其他元字符都要加反斜杠/v(即 very magic之意):任何元字符都不用加反斜杠/V(即 very nomagic之意):任何元字符都必须加反斜杠vim默认使用magic设置,这个设置也可以在正则表达式中通过/m/M/v/V开关临时切换。例如:
1://m.* #查找任意字符串2://M.* #查找字符串.*(点号后面跟个星号)3: 4://v(a.c){3}$ #查找行尾的abcaccadc5://m(a.c){3}$ #查找行尾的(abc){3}6://M(a.c){3}$ #查找行尾的(a.c){3}7://V(a.c){3}$ #查找任意位置的(a.c){3}$
推荐使用默认的magic设置,在这种情况下,常用的匹配有:
1://abc #查找以test开始的字符串 2:/abc/ #查找以test结束的字符串 3: 4:$ 匹配一行的结束 5: ^ 匹配一行的开始 6:/ 匹配一个单词的开始,例如//abcEnter:查找以abc开始的字符串 7:/ 匹配一个单词的结束,例如/abc/Enter:查找以abc结束的字符串 8: 9:* 匹配0或多次10:/+ 匹配1或多次11:/= 匹配0或1次12: 13:. 匹配除换行符以外任意字符 14:/a 匹配一个字符15:/d 匹配任一数字 16:/u 匹配任一大写字母17: 18: [] 匹配范围,如t[abcd]s匹配tas tbs tcs tds19:/{} 重复次数,如a/{3,5}匹配3~5个a20:/(/) 定义重复组,如a/(xy/)b匹配ab axyb axyxyb axyxyxyb...21:/| 或,如:for/|bar表示匹配for或者bar22: 23:/%20c 匹配第20列24:/%20l 匹配第20行
vi+文件名,可以创建一个文件
用cat+问价名,可以查看一个文件
用cut-f3+文件名,可以选择文件中的第3段字符
输入英文的冒号:然后输入wq可以保存文件内容并退出
输入英文的冒号:然后输入q可以放弃保存并退出
输入英文的冒号/然后输入一个字符串,可以查找该字符串
如果以上经验帮到您,麻烦在左下角给点个赞,谢谢!