使用unix实用程序将文件中的每个非字母字符更改为\n
我在看一个关于使用unix实用程序的教程那个家伙在MAC上使用它我有一台windows笔记本电脑所以我下载了 然后,我想用换行符“\n”替换文件中的任何非字母字符 教程中的命令行是:使用unix实用程序将文件中的每个非字母字符更改为\n,unix,nlp,gnuwin32,tokenize,Unix,Nlp,Gnuwin32,Tokenize,我在看一个关于使用unix实用程序的教程那个家伙在MAC上使用它我有一台windows笔记本电脑所以我下载了 然后,我想用换行符“\n”替换文件中的任何非字母字符 教程中的命令行是: tr -sc 'A-Za-z' '\n' < filename.txt |less 我试过了 tr -sc "A-Za-z" "\n" < filename.txt |less 我试图删除恭维选项并在正则表达式中添加^ tr "[^A-Za-z]" "\n" < filename.t
tr -sc 'A-Za-z' '\n' < filename.txt |less
我试过了
tr -sc "A-Za-z" "\n" < filename.txt |less
我试图删除恭维选项并在正则表达式中添加^
tr "[^A-Za-z]" "\n" < filename.txt |less
tr“[^A-Za-z]”\n
结果是将每个字母
替换为换行符
问题是GNUwin32的UNIX实用程序中的命令行选项是否与其他选项不同?把正则表达式放在像“A-Z”这样的单引号之间与“A-Z”不同吗
如果是这样,除了上面失败的试验之外,用换行符替换每个非字母字符的最佳答案是什么
嗯
$ tr -sc '[A-Za-z]' "\n" < getCokeInfo_viaFinger_cmu.awk
bin
gawk
f
BEGIN
wisc
edu
finger
....
$tr-sc'[A-Za-z]'“\n”
注意,我使用了char类([A-Za-z]
)。也许你的tr
也需要这个
我希望这能有所帮助。我在
tr--version
(GNU coreutils)8.5和
1) 使用单引号或双引号没有区别
2) 看起来没有办法通过使用^
当你写[^A-Za-z]
时,所有这些字符都会被逐字处理:
echo "abc abd [hh] d^o 1976" | tr '[^A-Za-z]' '.'
还是用双引号
echo "abc abd [hh] d^o 1976" | tr "[^A-Za-z]" '.'
生成以下输出
... ... .... ... 1976
这证明了所有的无标签字符、插入符号和方括号都被逐字处理并替换了
这使我们得出结论,要按非字母字符拆分,必须使用-c
和范围'a-Za-z'
,就像在第一个示例中一样
cat file.txt | sed -re 's/[^a-zA-Z]/\n/g'
)() @shellter谢谢:),事实上我正在学习,我本可以寻找另一种选择,但我想我有兴趣使用tr命令使其工作,。再次感谢您如果您在每个字母后都有一个单引号
,
,那么很明显,您将在每个字母后都有一行新词,因为您将每个not字母替换为\n
@anubhava您可以检查我使用的文本@问题的结尾我在每个字母后都没有逗号letter@HadyElsahar:您是什么shell/command解释器使用?是windows“cmd
(与Unix shell有不同的转义规则)吗?我不是说逗号。您的命令tr-sc'A-Za-z'\n'
没有问题,因为在提供的输入中,每个字母后面都有一个引号'
。如果您使用echo“Shakes'peare”|tr-sc“A-Za-z”\n'
您将在字符串Shakes
和peare
之间仅获得一行新行。如果不使用我,它会在每个字符后添加一行新行,另一个值得注意的是,它会删除非字母字符。您真的需要字符类吗?c-c来自POSIX,应该在任何地方都可以工作(至少对于POSIX语言环境,其他语言环境有未定义的行为,这是显而易见的原因)。当我忽略它们时,我收到了与O.P.相同的错误消息。祝大家好运@HadyElsahar:关于上一条消息,很抱歉,我错过了你是O.P.你的消息说“用换行符“\n”替换文件中的任何非字母字符”,所以对我来说,这并不意味着保留非文本字符。如果您想保留它们,那么tr
绝对不是用于此的工具,您需要使用sed
、awk
或。。。?祝你好运。@HadyElsahar:你的tr
是否响应tr--version
?我使用的是tr(gnucoreutils)5.97
。祝你好运
... ... .... ... 1976
cat file.txt | sed -re 's/[^a-zA-Z]/\n/g'