Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用unix实用程序将文件中的每个非字母字符更改为\n_Unix_Nlp_Gnuwin32_Tokenize - Fatal编程技术网

使用unix实用程序将文件中的每个非字母字符更改为\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

我在看一个关于使用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.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'