Linux/Unix tr 命令,奇怪的行为

标签 linux bash unix tr

我正在尝试使用“tr”命令,并使用它的 -d 删除选项。我的目的是按照访问日期的顺序重新排列文件列表。

我有一个文件orderedFile,其中包含以下内容:

Access: 2014-02-09 21:35:36.642598731 -0700 0) accessedfiles.cpp
Access: 2014-02-10 14:24:01.527811265 -0700 1) accessedfiles.sh
Access: 2014-02-10 14:24:03.563811320 -0700 2) onlyFilesListFile
Access: 2014-02-10 14:24:03.563811320 -0700 3) orderedFile
Access: 2014-02-10 14:23:37.623810616 -0700 4) properlyOrdered
Access: 2014-02-10 14:23:37.543810614 -0700 5) smallestToLargest
Access: 2014-02-09 21:35:36.642598731 -0700 6) strace.txt
Access: 2014-02-09 21:35:36.638598730 -0700 7) sum.cpp
Access: 2014-02-10 13:24:54.415715076 -0700 8) test
Access: 2014-02-09 21:35:36.638598730 -0700 9) testFile

然后,我使用命令 tr -d 'Access: ' 将 Access 部分从每行中删除(这是通过每行上的 bash 脚本完成的),并在正确排序的新文件中得到以下输出:

2014-02-09213536.642598731-07000)adfil.pp
2014-02-10142401.527811265-07001)adfil.h
2014-02-10142403.563811320-07002)onlyFilLitFil
2014-02-10142403.563811320-07003)ordrdFil
2014-02-10142337.623810616-07004)proprlyOrdrd
2014-02-10142337.543810614-07005)malltToLargt
2014-02-09213536.642598731-07006)tra.txt
2014-02-09213536.638598730-07007)um.pp
2014-02-10132454.415715076-07008)tt
2014-02-09213536.638598730-07009)ttFil

所以我现在有了可以使用 grep 的日期,但是文件名已经变得很时髦并且被压缩了。知道为什么吗?现在他们将更难匹配他们的全名。

最佳答案

这实际上是错误的命令:

tr -d 'Access: ' 

因为它将删除所有出现的字母 a、c、e、s:

您需要sed:

sed 's/^ *Access: //'

关于Linux/Unix tr 命令,奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21688495/

相关文章:

linux - 无法在 Ubuntu 16.04 上使用 Go 连接到 NetSuite ODBC

bash - 在 while 循环中捕获信号和清理

linux - while 循环中的多线程 Bash

java - 多平台 getResourceAsStream

linux - 为什么重定向符号会改变 ls 的行为?

unix - 如何通过排除某些文件扩展名来搜索 unix 中的一个或多个目录

linux - Linux 的 net 组/域的等效命令?

c - libubox是否支持多线程

linux - Unix - 依赖任务执行

linux - Bash,每次输入无法识别的参数时在终端中打印 0