在每个 ! 之后打印文本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
我想在 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