在每个 ! 之后打印文本bash 中的(感叹号)

Print text after every ! (exclamation mark) in bash

我想在 bash 中的每个 !(感叹号)后打印 strings/texts。

示例string/text:

check_queue!TEST_IN!Queue!400!750

我想要这个输出:

TEST_IN Queue 400 750

我试过这个:

cat filename | cut -d "!" -f2

你快到了:

cut -d! -f2- filename | tr '!' ' '

-f2- 表示字段 2 和所有后续字段

不需要 cat,只需处理文件

tr '!' ' ' 将感叹号 ! 翻译成 space .

或者如果您的 cut 版本有一个 --output-delimiter= 选项:

cut --delimiter=! --fields=2- --output-delimiter=' ' filename

或使用awk:

awk -F! '{=""; print substr([=12=],2)}' filename
  • -F!:设置字段分隔符为!
  • ="": 擦除第一个字段
  • print substr([=24=],2): 从第二个字符开始打印整个记录,因为第一个字符是空白分隔符,从擦除的第一个字段中保留下来。

首先应用一个FOREACH线循环

while read s; do
  #foreach substring 
    for (( i=0; i<${#s}; i++ )); do
if ["${s:$i:1}" != “!”] then
   #add to the String the extra letter 
   String="${s} ${s:$i:1}"
else
    #print each time you find !
    print String 
    #prepare it to print next String
    String =“”
fi 
done
  done <your filename.txt