小编Din*_*edi的帖子

Bash date命令无效日期

在linux bash中,当我输入date -d "1986-01-01"它时显示错误

date: invalid date "1986-01-01"

date -d "1986-01-02"它工作

date -d "1987-01-01"它也有效

为什么date -d "1986-01-01"在Linux Bash shell中显示错误.

我正在使用Fedora 16

linux bash fedora

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

使用 sed 匹配包含括号的模式

如果行包含单词 VARCHAR(1000),我需要在行的开头插入“--”

我的文件示例是:

TRIM(CAST("AP_RQ_MSG_TYPE_ID" AS NVARCHAR(1000))) AP_RQ_MSG_TYPE_ID, TRIM(CAST("AP_RQ_PROCESSING_CD" AS NVARCHAR(1000))) AP_RQ_PROCESSING_CD, TRIM(CAST("AP_RQ_ACQ_INST_ID" AS NVARCHAR(11))) AP_RQ_ACQ_ INST_ID,修剪( CAST("AP_RQ_LOCAL_TXN_TIME" AS NVARCHAR(10))) AP_RQ_LOCAL_TXN_TIME, TRIM(CAST("AP_RQ_LOCAL_TXN_DATE" AS NVARCHAR(10))) AP_RQ_LOCAL_TXN_DATE, TRIM(CAST("AP_RQ_RETAILER" AS NVARCHAR(11))) AP_RQ_RETAILER,

我用了这个命令

sed 's/\(^.*VARCHAR\(1000\).*$\)/--\1/I' *.sql
Run Code Online (Sandbox Code Playgroud)

但结果并不如预期。有谁知道我做错了什么?

regex bash sed

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

将命令的输出分配给变量

我必须在白色空格之后剪切字符串并将值存储在空白之前.我的示例脚本如下所示

tString="This is my name"
echo $tString | cut -d' ' -f1
Run Code Online (Sandbox Code Playgroud)

输出:

这个

现在我想将此输出值分配给变量.我的剧本是

tString="This is my name"
var=$($tString | cut -d' ' -f1)
Run Code Online (Sandbox Code Playgroud)

它显示error.Error消息

这:找不到命令

我是bash shell脚本的新手.任何人都知道如何做到这一点.

linux bash

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

将负数乘以-1时的奇怪行为

我正在使用bash编写脚本,我得到这样的负数

-001,-002,-003,.........................,-008,-009,-010,-011,-012. ....

我必须将它们改为正数,所以我决定将-1乘以它们.然后

$ val=$(( -1*-001 ))
$ echo $val
$ 1
$ val=$(( -1*-002 ))
$ echo $val
$ 2
Run Code Online (Sandbox Code Playgroud)

结果可以达到-007,但是当我乘以-008和-009时,会发生如下错误

$ val=$(( -1*-008 ))
bash: -1*-008: value too great for base (error token is "008")

$ val=$(( -1*-009 ))
bash: -1*-009: value too great for base (error token is "009")
Run Code Online (Sandbox Code Playgroud)

另一个奇怪的行为是,当我乘以-010,-011,-012等等...异常结果发生如下

$ val=$(( -1*-010 ))
$ echo $val
$ 8
$ val=$(( -1*-011 ))
$ echo $val
$ 9
$ val=$(( -1*-012 ))
$ echo $val
$ …
Run Code Online (Sandbox Code Playgroud)

linux bash

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

使用Unix sed命令删除CSV文件中的前导零

我的csv文件是:

1234,0045,0045,0345,300
1235,0046,0446,2345,301
1236,0047,0447,0350,302
Run Code Online (Sandbox Code Playgroud)

我需要这样的结果:

1234,45,45,345,300
1235,46,446,2345,301
1236,47,447,350,302
Run Code Online (Sandbox Code Playgroud)

我想使用Unix SED命令完成此任务。还可以理解任何其他替代方法。

unix csv bash sed

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

Snowsql 两位数世纪开始日期转换问题

我想要2000-02-05在snowsql 中使用以下查询的结果。

alter session set  TWO_DIGIT_CENTURY_START=2000;
select cast ('05-FEB-00' as date) from dual;
Run Code Online (Sandbox Code Playgroud)

但我得到0001-02-05. 我正在使用现有脚本在适用于 oracle 的雪花中加载日期。我知道我可以使用 to_date 函数获得预期的结果,但我不想这样做。如果我必须,那么我已经改变了脚本中的许多地方,这是忙碌的。

我想要使​​用 cast 函数的解决方案。有谁知道这里发生了什么?

snowflake-cloud-data-platform snowsql

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

标签 统计

bash ×5

linux ×3

sed ×2

csv ×1

fedora ×1

regex ×1

snowflake-cloud-data-platform ×1

snowsql ×1

unix ×1