gpt4 book ai didi

linux - 在 Unix Shell 脚本中写出意外的新行

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:00:10 24 4
gpt4 key购买 nike

您好,我正在尝试输出一个 CSV 文件,但我总是将部分字符串写入新行。

整个脚本读入一个带有时间戳的 CSV 文件,对其进行转换,然后将 Epoch 时间作为新变量附加到行尾并输出文件。

#!/bin/bash 
OLDIFS=$IFS
IFS=","
cat test.csv | while read Host AName Resource MName TimeStamp Integer_Value Epoch;
do

Epoch=$(date -d "$TimeStamp GMT" +%s)

if [ -z "$Epoch" ]
then
(echo "$Host, $AName, $Resource, $MName, $TimeStamp, $Integer_Value, Epoch,";) >> target.csv

else
(echo "$Host, $AName, $Resource, $MName, $TimeStamp, $Integer_Value, $Epoch,";) >> target.csv

fi

done

我正在尝试设置一个 header 然后写出附加变量,期望,这只发生在新值上,它将附加变量放到一个新行。

#Host, AName, Resource, MName, Actual Start Time, Integer Value
, Epoch,
ABCD89A, Admin, shop, Stall Count, 2014-01-06 09:00:00.0, 0
, 1388998800,

代替

#Host, AName, Resource, MName, Actual Start Time, Integer Value, Epoch,
ABCD89A, Admin, shop, Stall Count, 2014-01-06 09:00:00.0, 0, 1388998800,

当我移动订单时,它不会发生。对不起,我知道这可能很简单,我是 Unix 脚本的新手。

编辑

我现在将代码更改为:

#!/bin/bash 
OLDIFS=$IFS
IFS=","
while read Host AName Resource MName TimeStamp Integer_Value Epoch
do

Epoch=$(date -d "$TimeStamp GMT" +%s)

if [ -z "$Epoch" ]
then
echo "$Host, $AName, $Resource, $MName, $TimeStamp, $Integer_Value, Epoch,"

else
echo "$Host, $AName, $Resource, $MName, $TimeStamp, $Integer_Value, $Epoch,"

fi

done < test.csv > target.csv

我仍然遇到同样的问题。

还有一个附加问题,如果有人知道为什么我得到:找不到命令日期:运行日期部分时无效的日期“Actual Start TimeStamp GMT”,但它会生成正确的日期并且脚本会运行。

最佳答案

试试这个脚本:

IFS=[,$'\r']; while read Host AName Resource MName TimeStamp Integer_Value Epoch
do
# ignore first line with headers
[[ "$Host" == \#* ]] && continue

Epoch=$(date -d "$TimeStamp GMT" +%s)

if [ -z "$Epoch" ]; then
echo "$Host, $AName, $Resource, $MName, $TimeStamp, $Integer_Value, Epoch,"
else
echo "$Host, $AName, $Resource, $MName, $TimeStamp, $Integer_Value, $Epoch,"
fi
done < test.csv > target.csv

它做了两件不同的事情:

  1. 它将\r 视为字段分隔符并且不将其包含在读取变量中
  2. 它会忽略第一行,即输入 CSV 文件的标题

关于linux - 在 Unix Shell 脚本中写出意外的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21116795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com