hello_unix
全部博文(2)
2011年(1)
2008年(1)
潘立亚
大鬼不动
send_lin
cunlifan
Super_Jo
manshukw
anthonyp
G0008466
分类:
2008-05-08 01:24:06
转换字符。
tr [ | -cds | -cs | | -Cds | -Cs | -ds | ] [ ]
tr { -cd | -cs | | -Cs | | } [ ]
tr 命令从标准输入删除或替换字符,并将结果写入标准输出。根据由 String1 和 String2 变量指定的字符串以及指定的标志,tr 命令可执行三种操作。
如果 String1 和 String2 两者都已指定,但 -d 标志没有指定,则 tr 命令就会从标准输入中将 String1 中所包含的每一个字符都替换成 String2 中相同位置上的字符。
如果 -d 标志已经指定,则 tr 命令就会从标准输入中删除 String1 中包含的每一个字符。
如果 -s 标志已经指定,则 tr 命令就会除去包含在 String1 或 String2 中的任何字符串系列中的除第一个字符以外的所有字符。对于包含在 String1 中的每一个字符,tr 命令会从标准输出中除去除第一个出现的字符以外的所有字符。对于包含在 String2 中的每一个字符,tr 命令除去标准输出的字符序列中除第一个出现的字符以外的所有字符。
String1 和 String2 变量中所包含的字符串可以使用以下的约定来表示:
alnum loweralpha printblank punctcntrl spacedigit uppergraph xdigit
除 [:lower:] 和 [:upper:] 转换字符类之外,其它字符类指定的字符都按未指定的顺序放入数组中。由于未定义字符类指定的字符的顺序,仅当目的为将多个字符映射为一个时才使用这些字符。转换字符类除外。
有关字符类的详细情况,请参阅 ctype 子例程。
如果某个字符在 String1 中被指定过多次,则该字符就被转换成 String2 中为与 String1 中最后出现的字符相对应的字符。
如果由 String1 和 String2 指定的字符串长度不相同,则 tr 命令就会忽略较长一个字符串中的多余字符。
如果没有指定 -d 选项,则由 String1 指定的字符的补码将放置到升序排列的数组中(如 LC_COLLATE 的当前设置所定义)。
如果没有指定 -d 选项,则由 String1 指定的值的补码将放置到通过二进制值升序排列的数组中。
该命令返回以下出口值:
tr '{}' '()' < textfile > newfile
这便将每个 {(左大括号)转换成 ((左小括号),并将每个 }(右大括号)转换成 )(右小括号)。所有其它的字符都保持不变。
tr '{}' '\[]' < textfile > newfile
这便将每个 {(左大括号)转换成 [(左方括号),并将每个 }(右大括号)转换成 ](右方括号)。左方括号必须与一个 "\"(反斜扛)转义字符一起输入。
tr 'a-z' 'A-Z' < textfile > newfile
tr -cs '[:lower:][:upper:]' '[\n*]' < textfile > newfile
这便将每一序列的字符(除大、小写字母外)都转换成单个换行符。*(星号)可以使 tr 命令重复换行符足够多次以使第二个字符串与第一个字符串一样长。
tr -d '\0' < textfile > newfile
tr -s '\n' < textfile > newfile
或
tr -s '\012' < textfile > newfile
tr -c '[:print:][:cntrl:]' '[?*]' < textfile > newfile
这便对不同语言环境中创建的文件进行扫描,以查找当前语言环境下不能打印的字符。
tr -s '[:space:]' '[#*]'
原文地址
上一篇:没有了
下一篇:IBM powerstart哈尔滨峰会的感想
登录 注册