小编Ben*_* W.的帖子

sed删除行尾的数字

我需要找出如何使用sed 删除文本文件中行末的最多 10位数字。

例如,如果我有这个:

ajsdlfkjasldf1234567890
asdlkjfalskdjf123456
adsf;lkjasldfkjas123
Run Code Online (Sandbox Code Playgroud)

它应该变成:

ajsdlfkjasldf
asdlkjfalskdjf
adsf;lkjasldfkjas
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

我有这个,但是它不起作用:

sed 's/[0-9]{10}$//g'
Run Code Online (Sandbox Code Playgroud)

regex linux sed

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

使用字符串外的$字符进行Bash回显

任何人都可以解释有什么区别

echo $"Starting $CMD" 
Run Code Online (Sandbox Code Playgroud)

echo "String $CMD"
Run Code Online (Sandbox Code Playgroud)

他们似乎看起来一样.

linux bash echo

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

这是什么意思[:-ge:意外的运算符,在bash中?

我是shell脚本并学习它的新手.我得到了监控apache的代码.该文件的名称是test.sh.我稍微改了一下代码.

我在寻找的是,当我这样做时:

./test.sh -H localhost -wr 2 -cr 5 -arg cpu_load
Run Code Online (Sandbox Code Playgroud)

它应该为它测试apache cpu_load.即我试图用我的-arg参数控制监控apache .

但这似乎并没有奏效.

当我运行这个:

./test.sh -H localhost -wr 2 -cr 5 -arg cpu_load
Run Code Online (Sandbox Code Playgroud)

我收到错误:

./test.sh: 282: [: -ge: unexpected operator
./test.sh: 286: [: -ge: unexpected operator
Run Code Online (Sandbox Code Playgroud)

以下是代码的一部分:

#!/bin/sh


while test -n "$1"; do
    case "$1" in
        --help|-h)
            print_help
            exit $ST_UK
            ;;
        --version|-v)
            print_version $PROGNAME $VERSION
            exit $ST_UK
            ;;
        --hostname|-H)
            hostname=$2
            shift
            ;;
        --port|-P)
            port=$2
            shift
            ;;
        --timeout|-t)
            timeout=$2
            shift
            ;;
        --remote-server|-R)
            remote_srv=1
            ;; …
Run Code Online (Sandbox Code Playgroud)

bash shell ubuntu

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

从字符串中提取可变长度的数量

我想从字符串中提取一些可变长度.

字符串看起来像这样:

used_memory:1775220696
Run Code Online (Sandbox Code Playgroud)

我想把这个1775220696部分放在一个变量中.关于这个问题有很多问题,但我找不到适合我需求的解决方案.

regex bash

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

将哈希元素初始化为0

我通过这样做在Perl中声明了一个哈希:

my %hash = ();
Run Code Online (Sandbox Code Playgroud)

我继续向哈希添加元素.有时,$hash{$x}没有定义,意味着它可能是null.因此,当我尝试打印它时,我什么也得不到.我希望0$x没有定义条目的情况下看到.有人能告诉我该怎么做?如何初始化哈希元素0

perl hashcode perl-data-structures

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

shell脚本中的"-le"是什么?

我正在阅读这段代码.我想知道-le以下代码段的含义 .

if [ $stage -le 2 ]; then
Run Code Online (Sandbox Code Playgroud)

在其中一个问题中,它-le代表<=字符串,但这是在Perl中.这里也一样吗?

此外,我想知道该$stage变量是否自动更新.它已经0在开始时初始化,但后来,它是如何增加的?

linux shell if-statement conditional-statements

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

如何在Solaris中使用shell脚本将时间设置为当前时间之后的2天?

我想将系统时间修改为两天,但我发现我可以使用dateSolaris中的命令将时间设置为特定时间:

#date mmddhhmmYY
Run Code Online (Sandbox Code Playgroud)

但是不能在当前时间增加两天.有没有一种简单的方法可以使用shell命令执行此任务?如果您在linux中了解类似内容,请与我分享.

linux shell solaris

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

如何在 Linux 中的 C++ 中检测 SD 卡的存在

下午好,

我正在运行一个简单的循环来检查 SD 卡是否已插入或移除,但它似乎并没有一直正常工作。

问题是,当程序以插入的 SD 卡启动时,if(f.good())语句为True

当取出 SD 卡时,此语句为False

但是,当重新插入 SD 卡时,该语句仍然为False

C++ 中是否有更可靠的方法来检测 SD 卡的存在?我正在运行基于 OpenEmbedded 的 Linux Yocto。我宁愿避免使用任何外部库,并尽可能使用文件 IO 或系统调用。

谢谢。

我的循环如下所示,

    while (running)
    {
        ifstream f("/dev/mmcblk1");
        if (f.good()) {
            f.close();
            if (!mounted)
            {
                system("mount /dev/mmcblk1p1 /mnt/Storage");   
                mounted = true;
            }
            sdPresent = true;
        }
        else {
            f.close();
            sdPresent = false;
            mounted = false;
        }
        std::this_thread::sleep_for(std::chrono::milliseconds(500));
    }
Run Code Online (Sandbox Code Playgroud)

linux c++11 openembedded yocto

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

在shell脚本中使用awk中的数组

我是Unix shell脚本的新手,并试图获得shell脚本的一些知识.请检查我的要求和我的方法.

我有一个包含数据的输入文件

ABC = A:3 E:3 PS:6 
PQR = B:5 S:5 AS:2 N:2
Run Code Online (Sandbox Code Playgroud)

我试图解析数据并得到结果

ABC
A=3
E=3
PS=6

PQR
B=5
S=5
AS=2
N=2
Run Code Online (Sandbox Code Playgroud)

可以水平和垂直添加值,因此我尝试使用数组.我正在尝试这样的事情:

myarr=(main.conf | awk -F"=" 'NR!=1 {print $1}'))
echo ${myarr[1]}
# Or loop through every element in the array
for i in "${myarr[@]}"
do
   :
  echo $i
done
Run Code Online (Sandbox Code Playgroud)

要么

awk -F"=" 'NR!=1 {
    print $1"\n"
    STR=$2
    IFS=':' read -r -a array <<< "$STR"
    for i in "${!array[@]}"
    do
    echo "$i=>${array[i]}"
    done

}' main.conf
Run Code Online (Sandbox Code Playgroud)

但是,当我将此代码添加到.sh文件并尝试运行它时,我会收到语法错误 …

arrays shell awk

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

捕获 stderr,但不捕获 stdout

在我的 bash 脚本中,我读入了一组如下所示的行

arg $PROG arg arg
Run Code Online (Sandbox Code Playgroud)

我希望能够运行该行,将 STDERR 捕获为变量,并防止 STDOUT 或 STDERR 打印到屏幕上。到目前为止,这是我的解决方案,但错误变量始终为空。

$PROG=/c/Program1
{ error=$($(eval $line) 2>&1 1>&$out); } {out}>&1
echo $error
Run Code Online (Sandbox Code Playgroud)

请详细说明解决方法。我是 bash shell 脚本的新手并正在尝试学习。

bash shell

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