lee*_*oon 2 unix bash awk sed tr
我试图tr -d从现有的字符串中删除一串字符,而不是删除其他地方的字符.
例如,我想从每个字符串的末尾tr删除.: OKfoo.txt
内容foo.txt:
BROKEN BONES: OK
Kefen Odvora: OK
BOOKS_FOR_MUM: OK
E: OK Amded: OK
Run Code Online (Sandbox Code Playgroud)
这是我运行的命令:
cat foo.txt | tr -d ": OK$"
Run Code Online (Sandbox Code Playgroud)
我希望它输出这个:
BROKEN BONES
Kefen Odvora
BOOKS_FOR_MUM
E: OK Amded
Run Code Online (Sandbox Code Playgroud)
但相反,我得到了这个,我不想要:
BRENBNES
efendvora
BS_FR_MUM
EAmded
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
Mac OS X Yosemite,bash 3.2.57(1) - 发布
您使用的是错误的工具.你想要的sed不是tr:
cat foo.txt | sed 's/: OK$//'
Run Code Online (Sandbox Code Playgroud)
或者最好
sed 's/: OK$//' foo.txt
Run Code Online (Sandbox Code Playgroud)
当你的输入真的只是一个文件,而不是一个更复杂的命令.
tr -d删除在参数中找到的所有出现的任何字符-d; 它不会将其视为匹配和删除的正则表达式.具体来说,要删除所有出现:,, O,K,并$从每一行.