每隔一次打印文本!bash中的(感叹号)



我想在bash中的每个!(感叹号(之后打印字符串/文本。

示例字符串/文本:

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,只需处理文件

CCD_ 4将感叹号CCD_ 5翻译成空格CCD_。

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

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

或使用awk:

awk -F! '{$1=""; print substr($0,2)}' filename
  • -F!:将字段分隔符设置为!
  • $1="":擦除第一个字段
  • print substr($0,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

最新更新