标签: ksh

需要检查文件是否存在?

在一个文件夹里面我有一些文件

UEDP01_20120821.csv
UEDP02_20120821.csv
UEDP03_20120821.csv
UEDP04_20120821.csv
UEDP05_20120821.csv
Run Code Online (Sandbox Code Playgroud)

只想检查所有文件是否存在.如果缺少任何一个文件,则需要创建一个具有相同名称的空文件.

例如:

UEDP01_20120821.csv
UEDP02_20120821.csv
UEDP04_20120821.csv
UEDP05_20120821.csv
Run Code Online (Sandbox Code Playgroud)

UEDP03_20120821.csv如果缺少此文件,则需要创建相同的文件.

linux shell perl awk ksh

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

包含"-c"的grep

我想搜索-c使用grep

例如:

$>ls -al | grep '-c'
Run Code Online (Sandbox Code Playgroud)

grep认为这是一种选择.

$>Usage: grep -hblcnsviw pattern file . . .
Run Code Online (Sandbox Code Playgroud)

如何搜索-c字符串?

bash shell ksh

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

KornShell中的通配符(ksh)

当我在我的主目录中并在终端中键入"ls*s*"时,它会显示所有名称中包含"s"的文件夹和文件(例如音乐).但是当我输入"ls*si*"时,它没有显示任何内容(我认为应该列出音乐).这是为什么?

unix shell scripting ksh

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

如何打印当前目录的父目录的名称

我希望我能清楚地表达我的问题.具体来说,就是这样:

我想使用test或者case case语句来确定变量$ DIR中包含的目录名是否是我当前的目录(.)或它的父目录(..)

当然我可以回显我当前的目录(echo $ PWD),但回显$ PWD父母的最简单方法是什么?

谢谢.

unix shell ksh

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

如何在bash中扩展文件名之前提取最后2个字符?

我想要完成的是取一个文件名让我们说myfileRE.txt并返回新的文件名myfile.txt.额外的两个字符总是两个字符,所以我试图做的是:

${filename%??.}
Run Code Online (Sandbox Code Playgroud)

而且我的想法是"匹配在这段时间之前出现的2个字符并将这些字符撕掉"..很遗憾,它只返回了整个文件名.

我最终这样做了:

${filename%??????}.txt
Run Code Online (Sandbox Code Playgroud)

但那不是很友好,必须有一个更清洁的方法来做到这一点.有什么建议?也许有正则表达式的东西?

regex bash ksh

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

perl system()退出代码36096

我试图从以下system()调用ksh脚本中找到退出代码36096的含义.

$proc_ret = system("/path/to/shellscript.sh"); 
Run Code Online (Sandbox Code Playgroud)

$ proc_ret返回"36096"

我检查了shellscript.sh的输出,它运行正常,直到调用了shellscript.sh中的另一个shell脚本(status.sh).只调用该脚本的第一行,不调用脚本的其余部分.

这是status.sh的内容

echo "a" > /tmp/a
echo "complete."
echo "b" >> /tmp/a
cat /path/to/mail.txt | mail -s "subject" email@domain
echo "mail complete."
echo "c" >> /tmp/a
Run Code Online (Sandbox Code Playgroud)

我不知道为什么脚本在第一行之后没有继续.对shellscript.sh进行系统调用的退出代码对我来说很奇怪.如果有人知道36096的含义,请告诉我.

perl ksh

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

在CSV中搜索非数字值的最快方法

在Linux/AIX- Unix中使用bash/ksh获取巨大CSV文件的特定列中的非数字值和行号的最快方法是什么.

假设我有以下格式的数据,

1,AAA,486254452,1F
2,BAF,265363,6A
3,AFHGJ, ,3G
...
50000,GAJGFGS,.,5H
...
100000,GHFHFFS,47,6L
Run Code Online (Sandbox Code Playgroud)

考虑到CSV中的行数可以很容易地为100,000,这是识别第3列中具有非数字值的行号的最快方法.非数字必须包含 - space,'.'.

我尝试了一个shell脚本并循环遍历文件的每一行,但这需要花费很多时间.

line=0
while read lineOfCSV
  3rdCol=`echo $lineOfCSV | cut -d ',' -f3`
  line=`expr $line +1`
  if ! [[ $3rdCol=~ '^[0-9]+$' ]] ; then
    echo "Line = :$line:  NON-NUMERIC VALUE :$3rdCol:"
  fi
done < data.csv
Run Code Online (Sandbox Code Playgroud)

我为上面的代码运行了80000行的CSV文件,处理时间超过10分钟.所以我停止了脚本并用谷歌搜索更快的解决方案.我找不到具体的东西.所以我在这里发布了这个问题.

bash ksh

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

在计算变量名时,在awk中打​​印变量

我有一个脚本,看起来像下面的例子.我有一个字母偏移,我需要打印我用偏移量计算的字母.我不知道如何使用ksh阅读那封信.

我期望的答案是LETTER_OFFSET(1)= a,LETTER_OFFSET(2)= v,LETTER_OFFSET(3)= c等.我在循环内计算了它的偏移量.

#!/bin/ksh
#         1    2  3  4  5  6  7 8  9 10  11 12
LETTERS=" a    v  c  d  g  r  g s  s a   g   f"
LETTER_OFFSET="3";
Letter=$(echo $LETTERS | awk '{print $((1 * $$LETTER_OFFSET )) }')
Run Code Online (Sandbox Code Playgroud)

bash awk ksh

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

Perl系统调用必须准确发送两个字符单引号和双引号'"

Perl系统调用必须将以下字符串发送到UnixShell:

'"XYZ"'
Run Code Online (Sandbox Code Playgroud)

在我的Perl脚本中,我使用了以下命令:

system("cleartool mkattr -replace ATTRIBUTE '"$attribute"' lbtype:$label");
Run Code Online (Sandbox Code Playgroud)

Shell Unix除了两个引用字符的使用外,一切都很好地传递给了:

'
Run Code Online (Sandbox Code Playgroud)

确实,

cleartool mkattr -replace ATTRIBUTE
Run Code Online (Sandbox Code Playgroud)

传递上面的命令,因为它正是我想要的.Perl变量$ attribute和$ label被很好地解释.但我不知道该怎样做才能获得:

'"XYZ"'
Run Code Online (Sandbox Code Playgroud)

这里XYZ是Perl变量$属性OS是价值AIX (Unix)Shellksh.cleartool是Clearcase的命令行界面,但修复我的问题不需要Clearcase技能.

shell perl ksh cleartool

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

jq解析的JSON中的控制字符

我正在编写KSH Shell脚本。它从JSON文件中读取,该文件包含控制字符(如)\n\r\t代替实际的换行符或制表符(因此,控制字符被作为实际的字符串读取)。我正在使用jq此JSON文件解析所需的内容,并将其附加到文本文件中。该文本文件还最终具有字符串,如\n\t而不是换行符,制表符等。我希望文本文件具有这些控制字符的实际含义。

例如,对于字符串"I\nam\na\ngood\nboy",我希望我的文件具有:

I
am
a
good
boy
Run Code Online (Sandbox Code Playgroud)

关于如何在Shell脚本中完成此操作的任何想法?

注意:我用KSH写作,但是以bash等答案是可以接受的。

bash shell json ksh jq

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

标签 统计

ksh ×10

shell ×6

bash ×5

perl ×3

awk ×2

unix ×2

cleartool ×1

jq ×1

json ×1

linux ×1

regex ×1

scripting ×1