tr -d 从字符串中删除精确的字符串
tr -d to remove an exact string of characters from a string
我正在尝试 tr -d
从现有字符串中删除一串字符,而不删除其他地方的字符。
例如,我希望 tr
从 foo.txt
中每个字符串的末尾删除 : OK
。
foo.txt
的内容:
BROKEN BONES: OK
Kefen Odvora: OK
BOOKS_FOR_MUM: OK
E: OK Amded: OK
这是命令我运行:
cat foo.txt | tr -d ": OK$"
我希望它输出这个:
BROKEN BONES
Kefen Odvora
BOOKS_FOR_MUM
E: OK Amded
但是我得到了这个,我不想要:
BRENBNES
efendvora
BS_FR_MUM
EAmded
我该如何解决这个问题?
Mac OS X Yosemite, bash 3.2.57(1)-发布
awk
在这里帮忙。
awk '{sub(/: OK$/,"")} 1' Input_file
您使用了错误的工具。你想要 sed
,而不是 tr
:
cat foo.txt | sed 's/: OK$//'
或最好
sed 's/: OK$//' foo.txt
当您的输入真的只是一个文件,而不是更复杂的命令时。
tr -d
删除在 -d
的参数中发现的 all 次出现的 any 字符;它不会将其视为正则表达式来匹配和删除。具体来说,您要从每行中删除所有出现的 :
、</code>、<code>O
、K
和 $
。
我正在尝试 tr -d
从现有字符串中删除一串字符,而不删除其他地方的字符。
例如,我希望 tr
从 foo.txt
中每个字符串的末尾删除 : OK
。
foo.txt
的内容:
BROKEN BONES: OK
Kefen Odvora: OK
BOOKS_FOR_MUM: OK
E: OK Amded: OK
这是命令我运行:
cat foo.txt | tr -d ": OK$"
我希望它输出这个:
BROKEN BONES
Kefen Odvora
BOOKS_FOR_MUM
E: OK Amded
但是我得到了这个,我不想要:
BRENBNES
efendvora
BS_FR_MUM
EAmded
我该如何解决这个问题?
Mac OS X Yosemite, bash 3.2.57(1)-发布
awk
在这里帮忙。
awk '{sub(/: OK$/,"")} 1' Input_file
您使用了错误的工具。你想要 sed
,而不是 tr
:
cat foo.txt | sed 's/: OK$//'
或最好
sed 's/: OK$//' foo.txt
当您的输入真的只是一个文件,而不是更复杂的命令时。
tr -d
删除在 -d
的参数中发现的 all 次出现的 any 字符;它不会将其视为正则表达式来匹配和删除。具体来说,您要从每行中删除所有出现的 :
、</code>、<code>O
、K
和 $
。