Bash 查找并用空值替换文本
亲爱的,在我的一个输入文件中,文本如下所示Bash 查找并用空值替换文本,bash,shell,sed,Bash,Shell,Sed,亲爱的,在我的一个输入文件中,文本如下所示 (LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XB3 (LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XC3 (LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XA0 (LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XB0 (LOCKED)
(LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XB3
(LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XC3
(LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XA0
(LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XB0
(LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XC0
现在,我希望通过从每行中删除“RncFunction=1,UtranCell=”得到如下输出
(LOCKED) (DISABLED) UE1146XB3
(LOCKED) (DISABLED) UE1146XC3
(LOCKED) (DISABLED) UE1146XA0
(LOCKED) (DISABLED) UE1146XB0
(LOCKED) (DISABLED) UE1146XC0
我使用了下面的代码
cat input.log | sed 's\/RncFunction\ \g'
但它不起作用。我做错了什么?请提供帮助。这将替换
Rnc
和所有以下内容,包括最后一个=
,而不包含任何内容
sed 's/Rnc.*=//' input.log
以下
awk
和sed
解决方案也可能对您有所帮助
解决方案1:使用sed
将匹配的正则表达式保存到内存中的功能
sed 's/\([^(RncFunction)]*\)\(RncFunction.*=\)\(.*\)/\1\3/' Input_file
解决方案2:使用名为sub
的awk
现成实用程序,该实用程序将根据提供的正则表达式替换字符串
awk '{sub(/RncFunction.*=/,"")} 1' Input_file
只需将不需要的字符串替换为零:
$ cat /tmp/tmp.txt | sed 's/RncFunction=1,UtranCell=//'
(LOCKED) (DISABLED) UE1146XB3
(LOCKED) (DISABLED) UE1146XC3
(LOCKED) (DISABLED) UE1146XA0
(LOCKED) (DISABLED) UE1146XB0
(LOCKED) (DISABLED) UE1146XC0
$ cat /tmp/tmp.txt
(LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XB3
(LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XC3
(LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XA0
(LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XB0
(LOCKED) (DISABLED) RncFunction=1,UtranCell=UE1146XC0
不要在这里使用反斜杠“\”。欢迎使用堆栈溢出,请根据论坛规则为您的示例输入和示例输出、命令/脚本使用代码标记,谢谢。您的命令将适用于单行。以下代码适用于所有事件。sed's/Rnc.*=//g'输入。log@SajibIslam那不是真的。您误解了sed的工作原理以及最后的
g
的含义。试试看。