小编yae*_*ael的帖子

awk + ​​仅当第一个字段以字符串作为 Linux1 开头时才打印行

如果第一个字段以 Linux1 开头,如何打印该行

例如:

  echo Linux1_ver2  12542 kernel-update  |   awk '{if ($1 ~ Linux1 ) print $0;}'
Run Code Online (Sandbox Code Playgroud)

目标是打印该行,而第一个字段以 Linux1 开头

线路示例:

Linux1-new  36352 Version:true
Linux1-1625543  9847
Linux1:16254 8467563 
Run Code Online (Sandbox Code Playgroud)

备注 - 空格或制表符可以在第一次提交之前

awk text-processing

26
推荐指数
2
解决办法
10万
查看次数

case + 如何在 case 语法中实现等于或小于或大于

我的目标是使用(仅使用case+ esac)验证数字范围,并打印该范围。例如:

  • 如果数字在 0 到 80 之间,则打印 >=0<=80
  • 如果数字在 81 到 100 之间,则打印 >=81<=100
  • 等等。

我下面的脚本的问题>=0<=90仅当数字介于 0 和 9 之间时才打印。如何修复我的脚本,使其根据数字范围打印正确的输出?

#!/bin/ksh
read number 
case $number in 
 [0-80])  echo ">=0<=80";; 
 [81-100]) echo ">=81<=100";; 
 [101-120]) echo ">=101<=120";;
 [121-300]) echo ">=121<=300";;
esac
Run Code Online (Sandbox Code Playgroud)

shell ksh shell-script arithmetic

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

如何从最后一个命令之前获取退出状态

我有solaris机器(solaris 10)

请查看以下简单命令(haconf -makerw | grep -iq "Cluster already writable")

    # haconf -makerw 
      VCS WARNING V-16-1-10364 Cluster already writable.


    haconf -makerw | grep -iq "Cluster already writable"
    # echo $?
    0
Run Code Online (Sandbox Code Playgroud)

我从 grep 得到退出状态 0,

这是正确的(因为我们总是在最后一个命令中获得 exe 状态)

我的问题是:

如何从命令haconf -makerw 代替 grep获取退出状态( $? )?

或者需要在我的语法中添加什么才能了解​​ haconf -makerw 是否成功?

    haconf -makerw | grep -iq "Cluster already writable"
    # echo $? ( will print the exe status from haconf -makerw  )
Run Code Online (Sandbox Code Playgroud)

linux bash solaris shell-script command

8
推荐指数
0
解决办法
262
查看次数

Solaris + 显示文件时间戳[年][月][日]

我有 Solaris 10 机器

我需要验证 Solaris 机器中某个文件的时间戳

并获得以下格式

 [year][month][day]
Run Code Online (Sandbox Code Playgroud)

Linux 上的工作命令示例

  ls -l --time-style=+%Y%m%d /etc/hosts | awk '{print $6}'
  20121107   <----- ( expected results )           
Run Code Online (Sandbox Code Playgroud)
  • 备注我不能在我的solaris机器上安装gnu ls!

在我的 Solaris 机器上,我尝试了以下命令,但它们都不起作用(因为 Solaris 标志与 Linux 不同),并且我的 Solaris 中未定义 stat 命令

# ls -l -T -D %Y%m%d /etc/hosts
ls: illegal option -- T
ls: illegal option -- D
usage: ls -1RaAdCxmnlhogrtuvVcpFbqisfHLeE@ [files]
Run Code Online (Sandbox Code Playgroud)

# stat /etc/hosts | awk '/Access/{print $2}' | tail -n1 | tr -d'' '-'
ksh: stat:  not found
Run Code Online (Sandbox Code Playgroud)

请建议是否有其他方法可以获取文件的戳日期(不是通过 ls 或 …

ls solaris date timestamps

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

`java -version` 的输出与 grep 或 awk 不匹配

在我的 Linux 机器上,我不清楚为什么如果我执行以下操作,那么我不会只得到版本字符串(“1.5.0_32”)。

# java -version | grep version | awk '{print $NF}'
java version "1.5.0_32"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_32-b05)
Java HotSpot(TM) Server VM (build 1.5.0_32-b05, mixed mode)
Run Code Online (Sandbox Code Playgroud)

为什么不grepawk工作?

只是为了表明 grep 和 awk 在其他示例上工作

# echo ' java version "1.5.0_32" ' | grep version  | awk '{print $NF}'
"1.5.0_32"
Run Code Online (Sandbox Code Playgroud)

linux grep ksh awk

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

linux +如何忽略(过滤)带有空格的文件

有时文件名是由几个名称和每个名称之间的空格创建的,如下所示:

   $ touch  "A B C"
   $ ls
   A B C      <-- one file but has three words !                        
   file1
   file2
   file3
Run Code Online (Sandbox Code Playgroud)

如何忽略(过滤)从几个名称实际创建的文件为“AB C”?

预期输出

     $ ls <filter>
     file1
     file2
     file3
Run Code Online (Sandbox Code Playgroud)

linux ls ksh shell-script

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

删除包含重复文本的行

我有一个文件,每行包含两个路径。我想两次删除包含相同路径的行。

我在 Linux 和 Solaris 上工作。我想要 sed 或 awk 或 perl 的单行。

示例输入文件:

     /usr/lib/libgmp.so.3.3.3 /usr/lib/libgmp.so.3.3.3
     /usr/lib/libxslt.so.1.1.17 /usr/lib/libxslt.so.1.1.17
     /usr/lib/sse2/libgmp.so.3.3.3 /usr/lib/sse2/libgmp.so.3.3.3
     /usr/local/swp-tomcat-6.0/lib/commons-logging-1.1.1.jar /usr/local/swp-tomcat-6.0/lib/commons-logging-1.1.1.jar
     /usr/share/doc/libXrandr-1.1.1 /usr/share/doc/libXrandr-1.1.1
     /usr/share/doc/libxslt-1.1.17 /usr/share/doc/libxslt-1.1.17
     /etc/3.3.3.255 /etc/172.17.211.255
     /etc/1.1.1.255 /etc/172.17.213.255
Run Code Online (Sandbox Code Playgroud)

预期输出:

     /etc/3.3.3.255 /etc/172.17.211.255
     /etc/1.1.1.255 /etc/172.17.213.255
Run Code Online (Sandbox Code Playgroud)

sed awk text-processing

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

从行打印最后一个字段 + awk 的替代方案

由于我的 Solaris 机器上的技术原因,我无法使用awk来打印行中的最后一个字段。

awk从行(使用cuttr...等)打印最后一个字段的其他替代方法是什么?

示例 1:

/usr/bin/hostname
machine1b
/usr/bin/hostname  | /usr/bin/sed 's/\(.\{1\}\)/\1 /g' |  /usr/bin/awk  '{print $NF}'
b
Run Code Online (Sandbox Code Playgroud)

例2

echo 1 2 3 4 5 | /usr/bin/awk  '{print $NF}'

5
Run Code Online (Sandbox Code Playgroud)

bash solaris text-processing cut tr

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

用于solaris的`solaris + xargs命令

命令

find /tmp -name 'core*' -type f -print0 | xargs -0
Run Code Online (Sandbox Code Playgroud)

在 Linux 上工作正常,但xargs -0在 Solaris 上选项不合法

xargsSolaris 10的等效选项 ( ? )是什么

第二个问题:
是否可以更改语法:

find /tmp -name 'core*' -type f -print0 | xargs -0
Run Code Online (Sandbox Code Playgroud)

因此它将适用于操作系统 - Linux 和 Solaris

我在我的solaris 10机器上尝试:

find /tmp -name 'core*' -type f -print0 | xargs -0
xargs: illegal option -- 0
xargs: Usage: xargs: [-t] [-p] [-e[eofstr]] [-E eofstr] [-I replstr] [-i[replstr]] [-L #] [-l[#]] [-n # [-x]] [-s size] [cmd [args …
Run Code Online (Sandbox Code Playgroud)

linux solaris find xargs exec

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

标签 统计

linux ×4

solaris ×4

awk ×3

ksh ×3

shell-script ×3

text-processing ×3

bash ×2

ls ×2

arithmetic ×1

command ×1

cut ×1

date ×1

exec ×1

find ×1

grep ×1

sed ×1

shell ×1

timestamps ×1

tr ×1

xargs ×1