linux 字符转换,把字符串转化为数字
各位老铁们好,相信很多人对linux 字符转换都不是特别的了解,因此呢,今天就来为大家分享下关于linux 字符转换以及把字符串转化为数字的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
Linux系统中tr命令删除和替换文本字符的基本用法
通过使用 tr,您可以非常容易地实现 sed的许多最基本功能。您可以将 tr看作为 sed的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有 tr所能够做的。
tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。
带有最常用选项的tr命令格式为:
代码如下:
tr-c-d-s ["string1_to_translate_from"] ["string2_to_translate_to"] input-file
这里:
-c用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d删除字符串1中所有输入字符。
-s删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
字符范围
指定字符串1或字符串2的内容时,只能使用单字符或字符串范围或列表。
[a-z] a-z内的字符组成的字符串。
[A-Z] A-Z内的字符组成的字符串。
[0-9]数字串。
octal一个三位的八进制数,对应有效的ASCII字符。
[O*n]表示字符O重复出现指定次数n。因此[O*2]匹配OO的字符串。
tr中特定控制字符的不同表达方式
速记符含义八进制方式
a Ctrl-G铃声07
b Ctrl-H退格符10
f Ctrl-L走行换页14
n Ctrl-J新行12
r Ctrl-M回车15
t Ctrl-I tab键11
v Ctrl-X 30
表达字符串的特殊序列
String1和 String2变量中所包含的字符串可以使用以下的约定来表示:
如果某个字符在 String1中被指定过多次,则该字符就被转换成 String2中为与 String1中最后出现的字符相对应的字符。
如果由 String1和 String2指定的字符串长度不相同,则 tr命令就会忽略较长一个字符串中的多余字符。
标志
退出状态
该命令返回以下出口值:
实例:
1、将文件file中出现的"abc"替换为"xyz"
复制代码
代码如下:
# cat file| tr"abc""xyz" new_file
【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"。
2、使用tr命令“统一”字母大小写
(小写--大写)
代码如下:
# cat file| tr [a-z] [A-Z] new_file
(大写--小写)
代码如下:
# cat file| tr [A-Z] [a-z] new_file
3、把文件中的数字0-9替换为a-j
代码如下:
# cat file| tr [0-9] [a-j] new_file
4、删除文件file中出现的"Snail"字符
代码如下:
# cat file| tr-d"Snail" new_file
【注意】这里,凡是在file文件中出现的'S','n','a','i','l'字符都会被删除!而不是紧紧删除出现的"Snail”字符串。
5、删除文件file中出现的换行'n'、制表't'字符
代码如下:
# cat file| tr-d"nt" new_file
不可见字符都得用转义字符来表示的,这个都是统一的。
6、删除“连续着的”重复字母,只保留第一个
代码如下:
# cat file| tr-s [a-zA-Z] new_file
7、删除空行
代码如下:
# cat file| tr-s"n" new_file
8、删除Windows文件“造成”的'^M'字符
代码如下:
# cat file| tr-d"r" new_file
或者
代码如下:
# cat file| tr-s"r""n" new_file
【注意】这里-s后面是两个参数"r"和"n",用后者替换前者
9、用空格符40替换制表符11
代码如下:
# cat file| tr-s"11""40" new_file
10、把路径变量中的冒号":",替换成换行符"n"
代码如下:
# echo$PATH| tr-s":""n"
11、若要将大括号转换为小括号,请输入:
代码如下:
tr'{}''()' textfile newfile
这便将每个{(左大括号)转换成((左小括号),并将每个}(右大括号)转换成)(右小括号)。所有其它的字符都保持不变。
12、若要将大括号转换成方括号,请输入:
代码如下:
tr'{}''[]' textfile newfile
这便将每个{(左大括号)转换成 [(左方括号),并将每个}(右大括号)转换成 ](右方括号)。左方括号必须与一个""(反斜扛)转义字符一起输入。
13、若要将小写字符转换成大写,请输入:
代码如下:
tr'a-z''A-Z' textfile newfile
14、若要创建一个文件中的单词列表,请输入:
代码如下:
tr-cs'[:lower:][:upper:]''[n*]' textfile newfile
这便将每一序列的字符(除大、小写字母外)都转换成单个换行符。*(星号)可以使 tr命令重复换行符足够多次以使第二个字符串与第一个字符串一样长。
15、若要从某个文件中删除所有空字符,请输入:
代码如下:
tr-d'' textfile newfile
16、若要用单独的换行替换每一序列的一个或多个换行,请输入:
代码如下:
tr-s'n' textfile newfile
或
代码如下:
tr-s'12' textfile newfile
17、若要以“?”(问号)替换每个非打印字符(有效控制字符除外),请输入:
代码如下:
tr-c'[:print:][:cntrl:]''[?*]' textfile newfile
这便对不同语言环境中创建的文件进行扫描,以查找当前语言环境下不能打印的字符。
18、要以单个“#”字符替换字符类中的每个字符序列,请输入:
代码如下:
tr-s'[:space:]''[#*]'
如何将phpinfo字符串类型转换
php中iconv、mb_convert_encoding函数字符编码转换详解如下:
iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库。
用法如下:
$string="亲爱的朋友欢迎访问博客,希望给您带来一点点的帮助!";
iconv("utf8","gbk",$string)//将字符串string编码由utf8转变成gbk;
扩展如下:
echo[MathProcessingError]str=′好,欢迎访问博客,该博客记录一个程序员的成长过程!′;echo′<br/>′;echoiconv(′GB2312′,′UTF−8′,str);//将字符串的编码从GB2312转到UTF-8
echo'<br/>';
echoiconv_substr([MathProcessingError]str,1,1,′UTF−8′);//按字符个数截取而非字节printr(iconvgetencoding());//得到当前页面编码信息echoiconvstrlen(str,'UTF-8');//得到设定编码的字符串长度
//也有这样用的
[MathProcessingError]content=iconv("UTF−8","gbk//TRANSLIT",content);
备注:
1、iconv不是php的默认函数,也是默认安装的模块。需要安装才能用的。
如果是windows2000+php,你可以修改php.ini文件,将extension=php_iconv.dll前的";"去掉,同时你要copy你的原php安装文件下的iconv.dll到你的winnt/system32下(如果你的dll指向的是这个目录,我本地的没有操作这一步)
在linux环境下,用静态安装的方式,在configure时加多一项--with-iconv就可以了,phpinfo看得到iconv的项。(Linux7.3+Apache4.06+php4.3.2);
到此php中的iconv介绍完毕
2、用iconv函数把抓取来过的utf-8编码的页面转成gb2312,发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些。原因是这样的:
string iconv( string in_charset, string out_charset, string str)
注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT和//IGNORE,其中//TRANSLIT会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。被截断了,当然就会少了;
可以这样修改iconv("UTF-8","GB2312//IGNORE",$string)会忽略掉不能转化的字符;
附加:
PHP中的mb_convert_encoding与iconv函数介绍
mb_convert_encoding这个函数是用来转换编码的,和iconv函数差不多。
英文一般不会存在编码问题,只有中文数据才会有这个问题。比如用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。
做一个GBK To UTF-8
<?php
header("content-Type:text/html;charset=Utf-8");//设置字符的编码是utp-8
echomb_convert_encoding("你系我的友仔","UTF-8","GBK");
?>
再做GB2312 To Big5
<?php
header("content-Type:text/html;charset=big5");
echomb_convert_encoding("朋友","big5","GB2312");
?>
不过要使用上面的函数需要安装但是需要先enable mbstring扩展库,道理还是一样的,修改php.ini。
PHP中的另外一个函数iconv也是用来转换字符串编码的,与上函数功能相似。
下面还有一些详细的例子:
iconv—Convertstringtorequestedcharacterencoding
(PHP4>=4.0.5,PHP5)
mb_convert_encoding—Convertcharacterencoding
(PHP4>=4.0.6,PHP5)
用法:
stringmb_convert_encoding(stringstr,stringto_encoding[,mixedfrom_encoding]
需要先enable mbstring扩展库,在 php.ini里将; extension=php_mbstring.dll前面的;
去掉mb_convert_encoding可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;
那为何还要讲解这个 mb_convert_encoding()函数呢?答案如下:
发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。
另外mb_convert_encoding没有这个bug.
一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding函数.
* .* 在linux命令中是什么意思
*.*在linux命令中是什么意思?
表示任意几个字符串,其他具体的参考如下:
1.>重定向输出符号。
2.>>重定向输出符号,但有追加的功能。
3. 2>错误重定向输出符号,覆盖原文件内容。
4. 2>>错误重定向输出符号,有文件内容追加的功能。重定向:I/O。Linux Shell环境中支持输入输出重定向,用符号<和>来表示。0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出,比如 2>a.txt表示将错误信息输出到文件a.txt中。
5.*代表0个或者多个特殊字符
6.?匹配任意一个字符。
7.|管道符号。解释:mand1|mand2,将mand1的输出作为mand2的输入,比如ls-al|less,表示将ls-al的输出作为less的输入,即将la-al的输出分页。管道命令只接受标准输入(standoutput)。
8.&后台进程符。
9.&&l逻辑与符号。用法:命令1&&命令2表示如果命令1执行成功,继续执行命令2。
10.||逻辑或符号。用法:命令1||命令2表示如果命令1执行成功,不执行命令2;但如果命令1执行失败才执行命令2。
&&与||,命令执行是顺序进行的,没有优先级
11.!逻辑非符号。排除指定范围。例:ls a[!0-9]
12.[x-y]表示一定的范围。
13.#注释符;符合替换文字最短的那一个。
14.””双引号表示把它所包含的内容作为普通字符,但` `$ \‘‘几个符号除外。
15.’’单引号表示把它所包含的内容作为普通的字符,无特殊例外。
16.$变量符,提取变量,如echo$HOME,查看变量;正则表达式中表示行首。
17.\转义字符,就是将特殊字符转换成其本来的普通字符的意思。
18.``反单引号,表示它所包含的内容。一般作为嵌入的命令使用,此命令将先执行。
19.;命令分隔符。
20.<重定向输入符。
21.()表示整体执行命令。
22.^反向选择符,例:grep-n'^[^a-zA-Z]' wokao.txt,[]内的叫反向选择符,[]外的则表示定位在行首。查找行首不是英文字母的行。
23..点该表任意字符串
*:代表0或任意;
.:代表任意一个字符,这里应该纯粹指.;
所以*.*应该是带有.的文件,比如A.B,AA.BB,.B,A.,泛指有扩展名的文件。
tcpdump在linux命令中是什么意思
你使用tcpdump抓包的话它会一直监听你需要监听的端口,如果你想退出的话输入:ctrl+ c可以强制退出。
linux命令中su是什么意思
切换到其他系统用户
比如:
su- root
su- mysql
切换回root一般需要输入密码
linux命令中$#各是什么意思
Linux命令中,$一般表示变量,#一般表示注释。
linux命令$-是什么意思
$符号在Linux系统里面用于获取一个变量的值,例如:
#!/bin/bash--------指定编译shell环境为bash
STR="Hello World!"----设置STR的变量值为Hello World!
echo$STR------用echo命令读取STR变量的数值。这里如果不加$,输出结果是STR,加上$,输出结果就是Hello World!。
linux命令中ps-ef是什么意思
以下是man手册-f的注释
does full-format listing. This option can be bined with many other UNIX-style options to add additional columns. It also causes the mand arguments to be printed. When used with-L, the NLWP(number of threads) and LWP(thread ID) columns will be added. See the c option, the format keyword args, and the format keyword m.
ps-ef的执行结果就是打印所有进程的以下内容:
UID PID PPID C STIME TTY TIME CMD
这些命令试试就知道结果了.
linux命令man是什么意思
man是查看一个命令详细说明文档用的。
比如man cp就会显示cp(复制)这个命令的详细说明文件。包括每个参数的意思用法等等。