小编Kam*_*ani的帖子

有没有办法在redshift中找到表创建日期?

我在Amazon Redshift中查找表创建日期时遇到问题.我知道svv_table_info会提供有关该表的所有信息,但会提供创建日期.任何人都可以帮忙吗?

amazon-redshift

6
推荐指数
3
解决办法
1万
查看次数

将包含多个日期记录的UNIX文件拆分为每个日期的一个文件

我有一个包含以下记录的UNIX CSV文件 -

Merged_file.csv
USD,2015-09-22 02:34:43.0,XXX
USD,2015-09-22 03:31:43.0,XXX
USD,2015-09-22 04:35:43.0,XXX
USD,2015-09-23 03:31:43.0,XXX
USD,2015-09-23 02:34:43.0,XXX
USD,2015-09-23 03:37:43.0,XXX
USD,2015-09-23 04:32:43.0,XXX
Run Code Online (Sandbox Code Playgroud)

我想将此文件拆分为多个文件,例如一个文件应包含仅一个日期的记录.

需要的产出 -

File_2015-09-23.csv - 
USD,2015-09-23 03:31:43.0,XXX
USD,2015-09-23 02:34:43.0,XXX
USD,2015-09-23 03:37:43.0,XXX
USD,2015-09-23 04:32:43.0,XXX

File_2015-09-22.csv -
USD,2015-09-22 02:34:43.0,XXX
USD,2015-09-22 03:31:43.0,XXX
USD,2015-09-22 04:35:43.0,XXX
Run Code Online (Sandbox Code Playgroud)

我尝试使用下面的命令,但由于第二个字段是时间戳,它为每个时间戳创建单独的文件,我无法弄清楚如何只将日期作为分割文件的基本字符串 -

awk -F, '{print >  "File_"$2".csv"}' Merged_file.csv
Run Code Online (Sandbox Code Playgroud)

感谢是否有人可以提供帮助.

unix shell awk sed

3
推荐指数
1
解决办法
610
查看次数

将 .gz 文件拆分为多个 1GB 压缩 (.gz) 文件

我在 Linux 上有一个 250GB 的 gzipped 文件,我想将它拆分为 250 个 1GB 文件并动态压缩生成的部分文件(一旦生成一个文件,就应该对其进行压缩)。我试过用这个 -

zcat file.gz | split -b 1G – file.gz.part
Run Code Online (Sandbox Code Playgroud)

但这正在生成未压缩的文件,这是正确的。我将其修改为如下所示,但出现错误:

zcat file.gz | split -b 1G - file.gz.part | gzip
gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip -h
Run Code Online (Sandbox Code Playgroud)

我也试过这个,它没有抛出任何错误,但没有在生成零件文件后立即压缩它们。我假设这将在整个拆分完成后压缩每个文件(或者它可能会打包所有部分文件并在拆分完成后创建单个 gz 文件,我不确定)。

zcat file.gz | split -b 1G - file.gz.part && gzip
Run Code Online (Sandbox Code Playgroud)

在这里读到有一个过滤器选项,但我的 split 版本是 (GNU coreutils) 8.4,因此不支持过滤器。

$ split --version
split (GNU coreutils) 8.4
Run Code Online (Sandbox Code Playgroud)

请建议一种合适的方法来实现这一点,最好使用单行代码(如果可能)或 shell (bash/ksh) …

linux split

2
推荐指数
2
解决办法
4493
查看次数

shell脚本中每个输入字符串大写

我接受一些字符串作为我的脚本的用户输入,例如 -

read -p "User's full name : " FULLNAME
read -p "User's Manager's name : " MGRNAME
.
.
Run Code Online (Sandbox Code Playgroud)

我希望所有输入字符串都大写,即输入字符串中的每个单词都大写。

我写了一个简单的函数,例如 -

capitalize()
{
        $1=`echo ${$1}|sed -e "s/\b\(.\)/\u\1/g"`
}
Run Code Online (Sandbox Code Playgroud)

并将这个函数称为 -

capitalize FULLNAME
Run Code Online (Sandbox Code Playgroud)

它给出了以下错误 -

line 77: ${$1}: bad substitution
Run Code Online (Sandbox Code Playgroud)

还尝试过间接扩展 -

capitalize()
    {
            $1=`echo ${!1^}`
    }
Run Code Online (Sandbox Code Playgroud)

它抛出以下错误 -

line 77: FULLNAME=Kamlesh: command not found
Run Code Online (Sandbox Code Playgroud)

请帮助提供正确的语法或任何其他方式来实现此目的。

示例输出 - 我正在读取 FULLNAME 变量中的输入。当我调用 Capitalize() 时,它应该更新 FULLNAME 变量本身内的值。

例如,如果用户输入是 - “kamlesh gallani”

如果我现在调用大写 FULLNAME,那么 FULLNAME 应该包含“Kamlesh Gallani”

shell ksh

0
推荐指数
1
解决办法
4810
查看次数

标签 统计

shell ×2

amazon-redshift ×1

awk ×1

ksh ×1

linux ×1

sed ×1

split ×1

unix ×1