如何在bash shell脚本中打印条件语句



我正在尝试添加下面的条件语句,该语句将一个GMT偏移日期字符串列转换为MST。

样本输入

07/Sep/2020:11:28:01 +0000!@44.20.20.1!@TestDevice

样本输出

07/Sep/2020:04:28:01 -7000!@44.20.20.1!@TestDevice

这个条件语句工作良好

STR='07/Sep/2020:11:28:01 +0000'; SUB='+000'; if [[ "$STR" == *"$SUB"* ]]; then STR="${STR//// }"; STR="${STR/:/ }"; TZ="MST" date --date="$STR" +'%d/%h/%Y:%H:%M:%S %z'; else echo "$STR"; fi

我想在从名为output.csv的文件中提取数据时放置上述条件逻辑,分隔符为"@"并转储到output2.csv。所以我需要在下面的语句中用上面的条件逻辑代替$1

awk -F "!@" '{print $1"!@"substr($2,1,200)"!@"$3}' output.csv >output2.csv

所以我试着这样做,但不起作用

STR=$1
awk -F "!@" '{print $STR='07/Sep/2020:11:28:01 +0000'; SUB='+000'; if [[ "$STR" == *"$SUB"* ]]; then STR="${STR//// }"; STR="${STR/:/ }"; TZ="MST" date --date="$STR" +'%d/%h/%Y:%H:%M:%S %z'; else echo "$STR"; fi"!@"substr($2,1,200)"!@"$3}' output.csv >output2.csv

有人能帮吗

awk -F '!@' -v OFS='!@' '$1~/[0-9A-Za-z /:+-]/{gsub("/"," ",$1);sub(":"," ",$1);"TZ=MST date --date=""$1"" +"%d/%h/%Y:%H:%M:%S %z""|getline d;print d,substr($2,1,200),$3}' output.csv >output2.csv

这起到了作用。感谢jhnc

最新更新