下面是输入文件,它是此阶段的模板。我希望用脚本中的实际数据替换每行中的各种“ - ”。
DELIMITER $$
CREATE TRIGGER `content_before_insert` BEFORE INSERT ON `content`
FOR EACH ROW BEGIN
IF NEW.guoid = 0 THEN
INSERT INTO `content`.guoids (resource_type)
VALUES('Content');
SET NEW.guoid = LAST_INSERT_ID();
END IF;
END
$$
DELIMITER ;
我希望运行脚本并根据脚本中的条件一次更新(在同一文件中)一行。脚本的连续运行将更新文件的其他行。以下是剧本。
030 230 - - - - - - -
230 330 - - NA NA - - -
330 430 - - NA NA - - -
430 530 - - - - - - -
530 630 - - NA NA - - -
630 2400 - - - - - - -
预期产出低于。
##Time=`echo $(date) | awk -F ' ' '{print $4}' | awk -F ':' '{print $1$2}'`
Time=0330;
while read -r f1 f2 f3 f4 f5 f6 f7 f8 f9
do
if (( "${Time}" >= "${f1}" && "${Time}" < "${f2}" ))
then
sed "s/$f3/R/;s/$f4/F/;s/$f5/G/;s/$f6/H/;s/$f7/K/"
else
echo $f1 $f2 $f3 $f4 $f5 $f6 $f7 $f8 $f9
fi
done < consolidated.txt
然后在上面的文件中应用Time = 0600的脚本输出类似这样的内容
030 230 - - - - - - -
230 330 - - NA NA - - -
330 430 R F NA NA G H K
430 530 - - - - - - -
530 630 - - NA NA - - -
630 730 - - - - - - -
但在使用Time = 0330(首次运行)运行脚本后,它会给出以下输出。
030 230 - - - - - - -
230 330 - - NA NA - - -
330 430 R F NA NA G H K
430 530 - - - - - - -
530 630 A B NA NA D E F
630 730 - - - - - - -
此类更改也在stdout中,而不是在文件中进行。 我试图使用sed标志-i,它不是我系统上的识别标志。
我认为sed的使用方式需要有所不同,但不确定是什么。
答案 0 :(得分:1)
前导0表示十六进制,将数字解释为十进制使用10#n
if (( "10#${Time}" >= "10#${f1}" && "10#${Time}" < "10#${f2}" ))
答案 1 :(得分:0)
sed -i
仅存在于GNU sed中。 AIX使用公共POSIX sed
。您必须输出到另一个文件,然后覆盖原始文件或安装GNU sed。
我建议安装GNU sed,从未在AIX上从源代码编译它时遇到问题。
公平地说,我不知道你为什么在这里使用sed
if (( "${Time}" >= "${f1}" && "${Time}" < "${f2}" ))
then
sed "s/$f3/R/;s/$f4/F/;s/$f5/G/;s/$f6/H/;s/$f7/K/"
else
echo $f1 $f2 $f3 $f4 $f5 $f6 $f7 $f8 f9
fi
您已将所有空格分隔的部分读作变量,因此您几乎可以将它们反映出来
if (( "${Time}" >= "${f1}" && "${Time}" < "${f2}" ))
then
echo $f1 $f2 R F G H K $f8 $f9
else
echo $f1 $f2 $f3 $f4 $f5 $f6 $f7 $f8 f9
fi
另外,我要杀了
< consolidated.txt
来自脚本。相反,我每次都会使用输入和输出来调用脚本,这为你调用它提供了一些自由:
cat consolidated.txt | ./script.sh > consolidated_result.txt
./script <consolidated.txt >consolidated_result.txt
cat consolidated.txt | ./script.sh | ./further_processing.sh
(这将是* nix的做事方式)