如何从 UNIX/Linux 输出中删除修复子字符串?

如何从 UNIX/Linux 输出中删除修复子字符串?

我的问题看起来很简单,但是:

  • 我想删除整个字符串,而不是字符列表,所以我不能使用tr
  • 我不知道我的子字符串的位置,所以我无法使用cut
  • 我没有使用正则表达式,但是我的子字符串是一个命名空间,所以它确实包含点,所以我不知道如何使用sed

要点如下:我有以下几行:

2023-10-01 15:38:35.2545 | Info | Company.Customer.Server.Communication.Connection.ConnectionManager.SendNextTelegram | Message sent to Server: <HM><ID>25364205</ID><TC>CHR</TC><TR><ID>25906006</ID><DS><ID>GPR5_IN</ID></DS></TR></HM>
2023-10-01 15:38:35.6801 | Info | Company.Customer.Server.Communication.Connection.ConnectionManager.OnDataReceived | Telegram received from Server: <HM><ID>25364205</ID><TC>CHR</TC><RT>SUCCESS</RT><RC>0</RC><TR><ID>25906006</ID><DS><ID>GPR5_IN</ID></DS></TR></HM>

我想删除命名空间“Company.Customer.Server.Communication.Connection。”。

我尝试过的方法如下:

sed -e 's/"Company.Customer.Server.Communication.Connection.ConnectionManager"/""/g'

(我可以想象你会说“但是这非常简单,只需禁用正则表达式sed”,但手册页只提到了开关-r,这会导致使用更多的正则表达式。)

哦,我在 Windows 计算机上使用 Ubuntu WSL。

答案1

sed在这种情况下,您不需要双引号,因此使用:

sed -e 's/Company.Customer.Server.Communication.Connection.ConnectionManager//g' 

您还可以使用类似以下内容awk

awk '{gsub(/Company.Customer.Server.Communication.Connection.ConnectionManager/,"");print}'

相关内容