我一直在尝试使用tr
操作文件,并有一个任务是删除一个文件中的所有标点符号并将内容移动到另一个文件中。
cat file1 | tr --delete [:punct:] | cp file1 file2
使用此命令时,我返回的文件预览没有标点符号,但是当我查看file2
时,所有标点符号仍然存在。
我做错了什么吗?
您不会更改file1
,因此最后一个cp
只是复制旧文件。cp
也不会从stdin
获取输入,因此您不会保存翻译后的输出。
您可以通过使用>
重定向将tr
输出直接管道传输到file2
来解决此问题。
tr --delete '[:punct:]' < file1 > file2
请注意,我还删除了对 cat 的无用使用。
看起来您需要重定向而不是管道。最后一个命令不是读取 stdio,只是将原始 file1 复制到 file2。尝试:
cat file1 | tr --delete [:punct:] > file2