标签: ksh

简单的Unix问题 - 配置

我正在使用Solaris 10,ksh.每当我做一个./configure,我得到错误"ksh:./ configure:not found"

当我执行"where configure"时,找不到任何内容.

我如何"安装配置"?

ksh solaris

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

识别确切的头文件

我在源文件(*.c)中使用了一些宏.

在编译期间或从库中是否有任何方法可以确定从中解析此特定宏的确切头文件?

问题是我们在某些头文件中使用宏#defined为10,但代码中接收的值为4.因此,我们不想去检查所有dep文件,而是想知道有一些直接的方法来识别宏从中解析出来的源.

c c++ unix ksh

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

KornShell:变量分配"000010"转换为8而不是10.

我有一个固定长度的字符串,这是一个数字.当我将字符串分配给变量时,它被赋值为8而不是10.为什么?我怎么阻止它?

$ i=10
$ ((i=i+1))
$ echo $i
11    # Right answer
$ i=000010
$ ((i=i+1))
$ echo $i
9     # Wrong answer
Run Code Online (Sandbox Code Playgroud)

更新:答案确认数字正在转换为八进制,并且需要删除前导零.这是sed命令.

echo"000010"| sed's/0*//'

unix shell scripting ksh sed

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

用于在KornShell的目录和子目录上使用dos2unix的Shell脚本

dos2unix将filename作为参数.我需要使它通用,以便它可以采取一个或多个目录,然后在目录中递归搜索并将树结构中的所有文件从dos转换为Unix.我正在使用KornShell(ksh).请帮忙

谢谢.

unix shell scripting ksh dos2unix

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

查找搜索字符串的最后一次出现,然后在Ksh中打印下一行

我们如何找到最后一个出现的搜索字符串(Regex),然后在其后打印下一行?假设一个文本文件具有如下数据

1 absc
1 sandka
file hjk
2 asdaps
2 amsdapm
file abc
Run Code Online (Sandbox Code Playgroud)

因此,从该文件中,我必须grep或awk最后一次出现2并打印其后的行。

regex awk grep ksh

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

我如何修复第42行:[:Linux中的参数太多了?

我有1个脚本开头 #!/bin/ksh

这是创建第42行的代码段:[:参数太多了

if  [ -f "$Log_dir/output.rej" ] && 
    [  grep -Hne "fails to validate" $Log_dir/output.rej >/dev/null ]
Run Code Online (Sandbox Code Playgroud)

它扩展为(set -xv)

+ '[' -f /export/home/xxxx/xsdlog/output.rej ']'
+ '[' grep -Hne 'fails to validate' /export/home/xxxx/xsdlog/output.rej ']'
TEST_VALIDATE.sh: line 42: [: too many arguments
Run Code Online (Sandbox Code Playgroud)

我试过了

if  [ -f $Log_dir/output.rej ] &&
    [  grep -Hne "fails to validate"   $Log_dir/output.rej >/dev/null ]
Run Code Online (Sandbox Code Playgroud)

没有引号(").结果相同.

我该如何解决这个错误?

unix linux shell ksh

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

rm -rf $ TIGER/$ {LION}/$ {RABBIT}/*和rm -rf $ TIGER/$ {LION}/$ {RABBIT}之间的区别是什么?

我需要理解它们之间的差异,rm -rf $TIGER/${LION}/${RABBIT}/* and rm -rf $TIGER/${LION}/${RABBIT}以便在脚本中放置它不会产生灾难,使它在没有设置变量的情况下从root中删除所有内容.在csh/ksh中使用rm -rf的安全方法是什么?

感谢帮助 !!

shell scripting ksh csh

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

KSH:sed命令用于搜索和替换文件中最后一次出现的字符串

我试图使用sed在文件中搜索最后一次出现.在HP-UX中,tac选项不可用.

对于Ex:以下是文件中的数据,

A|2121212|666666666 | 2|01|2 |B|1111111111 |234234234 |00001148|
B|2014242|8888888888| 3|12|3 |B|22222222222 |45345345 |00001150|
C|4545456|4444444444| 4|31|4 |B|3333333333333 |4234234 |00001148|
Run Code Online (Sandbox Code Playgroud)

我尝试着:

cat $filename | sed 's/00001148/00001147/g'
Run Code Online (Sandbox Code Playgroud)

对于00001148的出现,它从00001148变为00001147.

我必须搜索|00001148|最后一次出现并替换为另一个号码.目前我的sed命令正在更改00001148的两个实例.

ksh sed hp-ux

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

在使用“ ls”命令以及将输出分配给变量时,如何抑制stderr?

我正在尝试创建一个脚本,该脚本将根据它们的名称和时间戳在服务器上搜索文件,并将这些文件的数量计入一个变量。当文件可用时,它工作正常,但在文件不可用时,抛出stderr。

为了抑制stderr,我试图将其重定向到/ dev / null,但这仍然无济于事,并且该错误仍然在屏幕上显示。我知道我可以先使用'if'语句检查文件是否可用,然后进行计数,但这会不必要地延长脚本的时间。

那么,有没有一种方法可以让我计算文件计数并抑制stderr(如果有),以及仅在一行代码中将输出分配给变量?

当服务器上存在名称为“ example”的文件时,此命令将成功运行:

file_name=example
file_date=20190901

file_count=`ls -lrt "$PWD"/"$file_name"*"$file_date"* | wc -l`
Run Code Online (Sandbox Code Playgroud)

但是,当文件不存在时,它将在屏幕上抛出stderr,如下所示:

ls: cannot access /home/saurap01/example*20190901*: No such file or directory
Run Code Online (Sandbox Code Playgroud)

为了抑制此错误,我尝试将其重定向到/ dev / null,如下所示:

file_count=`ls -lrt "$PWD"/"$file_name"*"$file_date"* | wc -l` > /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

但这甚至无助于抑制错误。

我可以使用以下方法隐藏stderr吗:

file_count=`ls -lrt "$PWD"/"$file_name"*"$file_date"* | wc -l` 2>&-
Run Code Online (Sandbox Code Playgroud)

bash shell scripting ksh

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

如何在shell的日期字段中将零添加到个位数日期

我有如下数据

1213231421312131|USER|21121|1231412|XEM|NAME|NAME|||5072020|2313||||NY|2131|||99|E|||ver.01
6454242352352352|USER|13131|7342422|XEM|NAME|NAME|||13032001|1231||||TX|7312|||11|E|||ver.01
5131242515111233|USER|21212|2314413|XEM|NAME|NAME|||2101979|1231||||TX|7312|||11|E|||ver.01
2341313412341123|USER|62422|1124242|XEM|NAME|NAME|||23111979|1231||||TX|7312|||11|E|||ver.01
Run Code Online (Sandbox Code Playgroud)

我需要如下数据

1213231421312131|USER|21121|1231412|XEM|NAME|NAME|||05072020|2313||||NY|2131|||99|E|||ver.01
6454242352352352|USER|13131|7342422|XEM|NAME|NAME|||13032001|1231||||TX|7312|||11|E|||ver.01
5131242515111233|USER|21212|2314413|XEM|NAME|NAME|||02101979|1231||||TX|7312|||11|E|||ver.01
2341313412341123|USER|62422|1124242|XEM|NAME|NAME|||23111979|1231||||TX|7312|||11|E|||ver.01
Run Code Online (Sandbox Code Playgroud)

所以提交的 10 是一个日期列,我想在日期中添加零... 7 位数到 8 位数。我使用了以下命令,但该命令将管道符号替换为空格。

awk -F "|" '{$10 = sprintf("%08d", $10); print}' <fileName>
Run Code Online (Sandbox Code Playgroud)

请帮我处理这个请求

谢谢你

bash shell awk ksh

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

标签 统计

ksh ×10

shell ×6

scripting ×4

unix ×4

awk ×2

bash ×2

sed ×2

c ×1

c++ ×1

csh ×1

dos2unix ×1

grep ×1

hp-ux ×1

linux ×1

regex ×1

solaris ×1