标签: ksh

从 tar 文件中提取单个文件并将其放入另一个目录

我需要将 tar 文件中的单个文件提取到另一个目录。

到目前为止我有这个:

此操作将单个文件提取到同一目录:

tar -xvf filename.tar ./file.txt
Run Code Online (Sandbox Code Playgroud)

我试过了,但没用

tar -xvf filename.tar /home/dir ./file.txt
Run Code Online (Sandbox Code Playgroud)

或这个:

tar -xvf filename.tar -C /home/dir ./file.txt
Run Code Online (Sandbox Code Playgroud)

tar ksh directory

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

如何在HP-UX反向搜索中获取以前使用过的命令

我正在使用 HP-UX 操作系统,并且想要使用之前输入的命令,就像我在 Linux Ctrl+中使用的那样r,以便在 HP-UX 命令行中轻松访问。

ksh command-history

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

如何从特定字符串中剪切每一行?

输入.txt:

john_Apple01_xyz_1
john_Fruit_Apple01_abc_c1
john_Apple21_trs_1
john_Fruit_Apple21_efg_1
john_Fruit_Apple21_tefg_1
Run Code Online (Sandbox Code Playgroud)

期望的输出:

Apple01_xyz_1
Apple01_abc_c1
Apple21_trs_1
Apple21_efg_1
Apple21_tefg_1
Run Code Online (Sandbox Code Playgroud)

每次在行中找到苹果时,如何使用 nawk 或 sed 来剪切前导部分?

我在 Solaris 10 中使用 KSH。

ksh sed awk shell-script

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

必须解析 ls -Al 输出并获取文件或目录名称

我必须解析ls -Al输出并获取文件或目录名称

ls -Al 输出 :

drwxr-xr-x  12 s162103  studs         12 march 28 2012 personal domain
drwxr-xr-x   2 s162103  studs          3 march 28 22:32 public_html
drwxr-xr-x   7 s162103  studs          8 march 28 13:59 WebApplication1
Run Code Online (Sandbox Code Playgroud)

我应该只使用 ls -Al | <something>

例如:

ls -Al | awk '{print $8}'
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为$8如果目录名称中有空格,则不是名称,它是名称的一部分。也许有一些实用程序可以删除姓氏或删除以前的任何内容?

linux ls bash ksh

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

ksh 中是否有类似“goto”的命令

这是我的脚本:

#!/bin/ksh

#this is where I want to go again if user enter 
#an answer other than "yes or no"

echo "yes or no?"
read ans

case $ans in

    [yY]*)
        echo "yes"
        ;;

    [nN]*)
        echo "no"
        ;;

    *)
        echo "yes or no only"
        # here, if the answer is not "Y" or "N", 
        # I want to go back to asking "yes or no?"
        ;;
esac
Run Code Online (Sandbox Code Playgroud)

谁能给我一个提示?

ksh shell-script control-flow

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

如何将一系列模式从 shell 脚本传递给 awk?

我有一系列存储在其中的模式foo.txt,我想遍历这些模式并查看 file 中的哪些匹配行bar.txt

while read PWW
do
   cat user/dump/bar.txt | awk '/${PWW}/{print $2}' >> user/dump/out.txt
done < user/dump/foo.txt
Run Code Online (Sandbox Code Playgroud)

foo.txt

2100001b32
2100001b38
3100001b35
4100001b28
5100001b46
6100001b56
Run Code Online (Sandbox Code Playgroud)

bar.txt

2100001b32 good
2100001b38 bad
3100001b35 okay
4100001b28 large
5100001b46 good
6100001b56 bad
Run Code Online (Sandbox Code Playgroud)

想要的out.txt

good
bad
okay
large
good
bad
Run Code Online (Sandbox Code Playgroud)

我无法搜索foo.txt. while 循环运行并给我空输出。我想awk${PWW}foo.txt.

我怎样才能让它工作?我的环境是 Solaris 5.10,使用 Korn shell,基本awk (旧awk)。

solaris ksh awk

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

将ksh脚本目录转换为bash脚本的脚本?

由于这两个kshbash是基于sh很多的Korn Shell脚本(KSH)将简称为伯恩-再次Shell脚本(bash)的一次家当和文件扩展名被改变运行,

而你调用$ bash script.bash而不是$ ksh script.ksh.

我有一个基本脚本来替换名为“files”的目录中出现的任何 ksh 并更改脚本的文件扩展名。

#!/bin/bash/

#replace instances
find ./files -type f - exec sed -i.bak "s/ksh/bash/g" {} \;

#Change extensions
for f in ./files/*.ksh;
  do mv "$f" "./files/""$(basename "$f" .ksh).bash"
done

#Clean up
rm ./files/*.bak
Run Code Online (Sandbox Code Playgroud)

该脚本可以工作并执行上述操作,但是是否足以将任何 ksh 脚本转换为 bash,或者是否存在我未考虑的条件?

bash ksh shell-script conversion

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

如何提高以下代码的性能

下面是我的脚本,它有很多性能问题

#!/usr/bin/ksh
while read i
do
  x=`echo $i |cut -d"|" -f2`
  rem=`expr $x % 62`
  echo "reminder is " $rem
  quo=`expr $x / 62`
  echo "quotiont is " $quo

  grp_rem=" "
  if [[ ${#quo} -ge 2 ]]
  then
    while [ $quo -ge 62 ]
    do
      sub_rem=`expr $quo % 62`
      quo=`expr $quo / 62`
      grp_rem=`echo $sub_rem" "$grp_rem`
    done
  fi
  echo $i"|"$quo" "$grp_rem" "$rem >> base62_while.out
done < base62_while.txt
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以使用上述脚本提高性能吗?

样本输入:

1|5147634738948389685
Run Code Online (Sandbox Code Playgroud)

样本输出

1|5147634738948389685|6 8 16 13 46 17 20 35 9 …
Run Code Online (Sandbox Code Playgroud)

linux ksh

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

为什么“if tty -s”有效而“if [ tty -s ]”无效?

请注意,我ksh在 CentOS 中使用和运行。

我有一个 shell 脚本,其中记录器功能设置为:

if tty -s
then
  echo "${FOO}" | tee -a ${BAR_LOG_FILE}
else
  echo "${FOO}" >> ${BAR_LOG_FILE} 
fi
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我将它重构if为看起来像if我代码中的所有其他测试时,它停止运行。

为什么?

我的重构如下:

if [ tty -s ];
then
  echo "${FOO}" | tee -a ${BAR_LOG_FILE}
else
  echo "${FOO}" >> ${BAR_LOG_FILE} 
fi
Run Code Online (Sandbox Code Playgroud)

我唯一的改变是在 周围加上括号if并添加一个;,就像我的其余if测试一样,它们都按预期工作。

我的重构导致了一个错误,看起来像BAR_LOG_FILE无法找到。

这里发生了什么?

ksh tty test

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

将循环转换为单行命令以提高 HP-UX 中的 shell 脚本性能

我的 shell 脚本中有以下循环。它的作用是删除了超过 3000 个字节的记录,实际上它在读取和逐行检查字节时需要更长的时间,如果少于 3000 个字节,则创建一个文件。

if [ $FILE_NM = "HUN" ]
then
    HUN_FILENM=` ls HUN*.txt | tail -1 `
    while read line
    do
        bytes=` echo $line | wc -c `
        if (( $bytes <= 3000 )); then
            echo "$line" >> output290_donot_delete.txt
        fi
    done < $HUN_FILENM
    mv output290_donot_delete.txt $HUN_FILENM
fi
Run Code Online (Sandbox Code Playgroud)

Unix 中是否有任何命令读取文件,如果少于 3000 字节,然后创建文件。我需要避免循环

ksh hp-ux awk

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

在 UNIX 脚本中显示文件中的记录总数减 1 作为参数传递

输入按以下格式提供:

ksh -x count.sh filename `cat filepath/filename | wc -l
Run Code Online (Sandbox Code Playgroud)

这里的问题是我需要将第二个参数 cat 传递给另一个变量并执行expr -1.

我的要求是我需要计算命令本身的计数,并将其传递给脚本。

对于实际计数,记录总数应小于 1。我还需要删除标题记录。

ksh shell-script

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

将 shell Solaris ksh 迁移到 Red Hat

我们有数百个 shell 脚本在 Solaris 11.3 服务器上运行。系统外壳是ksh93

$ ls -l /bin/sh
lrwxrwxrwx   1 root     root          13 Apr 12  2018 /bin/sh -> sparcv9/ksh93
Run Code Online (Sandbox Code Playgroud)

所有脚本#!/bin/ksh的顶部都有she-bang 。

服务器正在迁移到在 x86/64 上运行的 Red Hat Enterprise Linux,我知道系统 shell 是 bash,默认情况下未在 RHEL 上配置 ksh93。

我假设可以在 RHEL 上安装和配置 ksh93 来帮助解决这个问题?

一些脚本使用 ksh 特定的语法。

有没有人有这个过程的经验?

bash rhel solaris ksh shell-script

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

如何忽略所有多次包含特殊字符的文本?

输入示例:

apple_ig
rabbit_cat_ig
dog_ig
bird_duck_ig
orange_ig
goat_ig
Run Code Online (Sandbox Code Playgroud)

预期输出:

apple_ig
dog_ig
orange_ig
goat_ig
Run Code Online (Sandbox Code Playgroud)

我需要忽略整个字符串中多次包含下划线 _ 的所有数据。

bash、ksh、sed、grep、awk

grep ksh sed awk shell-script

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

标签 统计

ksh ×13

shell-script ×6

awk ×4

bash ×3

linux ×2

sed ×2

solaris ×2

command-history ×1

control-flow ×1

conversion ×1

directory ×1

grep ×1

hp-ux ×1

ls ×1

rhel ×1

tar ×1

test ×1

tty ×1