2

在使用 ksh 时,我需要在行尾插入日期和主机名。这些行是从 vmstat 操作系统输出的,如果一行以数字开头,我需要在行尾添加日期和主机名:

我有这个测试脚本:

#!/usr/bin/ksh

  while read line
  do
    printf "$line"
    if [[ "$line" =~ "^([0-9])" ]]; then
       date '+ %m-%d-%Y %H:%M:%S'
       hostname
    else
       echo
    fi
  done

当我这样做时

vmstat 3 | test



syntax error at line 6 : `=~' unexpected
4

1 回答 1

3

您似乎使用了一个ksh不知道=~运算符的实现,例如ksh88.

您可以求助于例如grep进行匹配,例如

test.sh

#!/bin/ksh

while read line; do
    printf "$line"
    if echo "${line}" | grep -q "^[0-9]"; then
        printf "%s %s" "$(
            date '+ %m-%d-%Y %H:%M:%S'
        )" "$(hostname)"
    fi
    echo
done

示例运行:

$ printf "foo\n3 bar\nquux\n" | ./test.sh
foo
3 bar 05-06-2013 18:53:59 myhostname
quux
于 2013-05-06T15:58:31.537 回答