在脚本与命令行中使用时,awk添加回车符

在脚本与命令行中使用时,awk添加回车符,awk,Awk,从命令行: $cat file.txt OLAPSYS:3FB8EF9DB538647C:LOCKED OR EXPIRED awk '{sub(/[ ]+/," ")}1' file.txt ./script.sh > output cat output OLAPSYS:3FB8EF9DB538647C:LOCKED OR EXPIRED 在文件上运行awk.txt: $cat file.txt OLAPSYS:3FB8EF9DB538647C:LOCKED O

从命令行:

$cat file.txt

OLAPSYS:3FB8EF9DB538647C:LOCKED OR EXPIRED
awk  '{sub(/[  ]+/," ")}1'   file.txt
./script.sh > output

cat output

OLAPSYS:3FB8EF9DB538647C:LOCKED

OR

EXPIRED
在文件上运行awk.txt:

$cat file.txt

OLAPSYS:3FB8EF9DB538647C:LOCKED OR EXPIRED
awk  '{sub(/[  ]+/," ")}1'   file.txt
./script.sh > output

cat output

OLAPSYS:3FB8EF9DB538647C:LOCKED

OR

EXPIRED
预期结果:
OLAPSYS:3FB8EF9DB538647C:锁定或过期

来自我的脚本:$cat Script.sh

active_db_users="OLAPSYS:3FB8EF9DB538647C:LOCKED OR EXPIRED"

for i in $active_db_users

do

    acct_status=$(echo $i | awk '{sub(/[  ]+/," ")}1')
    echo $acct_status
done
运行脚本:

$cat file.txt

OLAPSYS:3FB8EF9DB538647C:LOCKED OR EXPIRED
awk  '{sub(/[  ]+/," ")}1'   file.txt
./script.sh > output

cat output

OLAPSYS:3FB8EF9DB538647C:LOCKED

OR

EXPIRED
意外结果包含回车符。如何修改脚本,使结果为一行,无回车符:

$cat file.txt

OLAPSYS:3FB8EF9DB538647C:LOCKED OR EXPIRED
awk  '{sub(/[  ]+/," ")}1'   file.txt
./script.sh > output

cat output

OLAPSYS:3FB8EF9DB538647C:LOCKED

OR

EXPIRED

OLAPSYS:3FB8EF9DB538647C:锁定或过期

正确引用shell变量:

active_db_users="OLAPSYS:3FB8EF9DB538647C:LOCKED OR EXPIRED"

for i in "$active_db_users"
do
    acct_status="$(echo "$i" | awk '{sub(/[  ]+/," ")}1')"
    echo "$acct_status"
done
然后再次运行脚本,如果仍然存在问题,请告知我们

看看你是否不知道为什么你应该总是引用你的变量,除非你有一个特定的目的,让他们不被引用,并充分理解所有的含义


另请阅读-无论您试图做什么,上面的脚本似乎是错误的方法。

您希望循环迭代多少次?