简体   繁体   English

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

[英]How to print conditional statement in bash shell script

I am trying to add the below conditional statement of mine which converts one GMT offset date string column into MST .我正在尝试添加我的以下条件语句,它将一个 GMT 偏移日期字符串列转换为 MST。

Sample input样本输入

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

Sample output样本输出

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

This conditional statement works fine这个条件语句工作正常

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

I want to place the above conditional logic while extracting data from a file called output.csv with delimiter as "!@" and dump to output2.csv.So i need to put the above conditional logic in place of $1 in below statement我想在从名为 output.csv 的文件中提取数据时放置上述条件逻辑,分隔符为“!@”并转储到 output2.csv。所以我需要将上述条件逻辑放在下面语句中的 $1 位置

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

So I am trying it like this but it isnt working所以我像这样尝试但它不起作用

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

Can someone please help有人可以帮忙吗

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM