相关疑难解决方法(0)

如何在Bash中的分隔符上拆分字符串?

我把这个字符串存储在一个变量中:

IN="bla@some.com;john@home.com"
Run Code Online (Sandbox Code Playgroud)

现在我想通过;分隔符拆分字符串,以便我有:

ADDR1="bla@some.com"
ADDR2="john@home.com"
Run Code Online (Sandbox Code Playgroud)

我不一定需要ADDR1ADDR2变量.如果它们是阵列的元素甚至更好.


根据以下答案的建议,我最终得到了以下内容,这就是我所追求的:

#!/usr/bin/env bash

IN="bla@some.com;john@home.com"

mails=$(echo $IN | tr ";" "\n")

for addr in $mails
do
    echo "> [$addr]"
done
Run Code Online (Sandbox Code Playgroud)

输出:

> [bla@some.com]
> [john@home.com]
Run Code Online (Sandbox Code Playgroud)

有一个涉及设置Internal_field_separator(IFS)的解决方案;.我不确定该答案发生了什么,你如何重置IFS为默认值?

RE:IFS解决方案,我试过这个并且它可以工作,我保持旧的IFS然后恢复它:

IN="bla@some.com;john@home.com"

OIFS=$IFS
IFS=';'
mails2=$IN
for x in $mails2
do
    echo "> [$x]"
done

IFS=$OIFS
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我试过的时候

mails2=($IN)
Run Code Online (Sandbox Code Playgroud)

我只是在循环打印时得到第一个字符串,没有括号围绕$IN它工作.

bash shell scripting split

1885
推荐指数
22
解决办法
204万
查看次数

如何在Bash中将变量设置为命令的输出?

我有一个非常简单的脚本,如下所示:

#!/bin/bash

VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'

echo $MOREF
Run Code Online (Sandbox Code Playgroud)

当我从命令行运行此脚本并将参数传递给它时,我没有得到任何输出.但是,当我运行$MOREF变量中包含的命令时,我能够获得输出.

我想知道如何获取需要在脚本中运行的命令的结果,将其保存到变量,然后在屏幕上输出该变量?

bash shell command-line

1513
推荐指数
14
解决办法
170万
查看次数

如何测试变量是否是Bash中的数字?

我无法弄清楚如何确保传递给我的脚本的参数是否为数字.

我想做的就是这样:

test *isnumber* $1 && VAR=$1 || echo "need a number"
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

linux bash shell

543
推荐指数
21
解决办法
61万
查看次数

如何为文件的每一行运行命令?

例如,现在我正在使用以下内容来更改我写入文件的Unix路径的几个文件:

cat file.txt | while read in; do chmod 755 "$in"; done
Run Code Online (Sandbox Code Playgroud)

有更优雅,更安全的方式吗?

bash loops line

135
推荐指数
7
解决办法
15万
查看次数

根据日期范围过滤日志文件条目

我的服务器具有异常高的CPU使用率,我可以看到Apache使用太多的内存.我有一种感觉,我是一个IP的DOS - 也许你可以帮我找到他?

我使用以下行,找到10个最"活跃"的IP:

cat access.log | awk '{print $1}' |sort  |uniq -c |sort -n |tail
Run Code Online (Sandbox Code Playgroud)

前5个IP对服务器的请求大约是"普通"用户的200倍.但是,我不知道这5个是非常频繁的访问者,还是他们正在攻击服务器.

是否有方法,将上述搜索指定为时间间隔,例如.最近两个小时或今天10-12之间?

干杯!

2011年10月23日更新 - 我需要的命令:

在过去X小时内获取条目[这里两小时]

awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print Date FS $4}' access.log
Run Code Online (Sandbox Code Playgroud)

在过去X小时内获取最活跃的IP [这里两小时]

awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print $1}' access.log | sort  |uniq -c |sort -n | tail
Run Code Online (Sandbox Code Playgroud)

在相对时间范围内获取条目

awk -vDate=`date -d'now-4 hours' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date && …
Run Code Online (Sandbox Code Playgroud)

linux apache ubuntu awk

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

将 16 行合并为一行

文件包含表示十六进制值的 ASCII 字符。(每行以“,”结尾)

cat temp.txt
    0x6A, 
    0xF2, 
    0x44,
    .....
    0xF8, 
    0x1A,
Run Code Online (Sandbox Code Playgroud)

我尝试将每 16 个单词/行组合成这样的一行

cat hex_result.txt 
0x6A, 0xF2, 0x44, 0xF8, 0x45, 0x41, 0x88, 0xD1,0x4E, 0x8B, 0xA3, 0xB1, 0x8C, 0xE0, 0x37, 0x2D, 
.... 
0xE2, 0x1C, 0x06, 0x8A, 0x75, 0x2B, 0xBC, 0x3C, 0xC5, 0x08, 0xB7, 0x4E, 0xB0, 0xE4, 0xF8, 0x1A,
Run Code Online (Sandbox Code Playgroud)

是否有任何 bash 命令来完成它?

bash

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

通过 bash 登录站点(stackoverflow)

如何在 Linux 中使用 Bash 登录网站。例如登录到StackOverflow我尝试了许多不同的方法,如下所示,但没有任何效果。

wget --save-cookies cookies.txt --keep-session-cookies --post-data="username=blahblah&password=blahblahblha" "https://stackoverflow.com/users/login?ssrc=head&returnurl=https%3a%2f%2fstackoverflow.com%2f"
Run Code Online (Sandbox Code Playgroud)

或者

curl --user myusername:mypassword https://stackoverflow.com/users/login?ssrc=head&returnurl=https%3a%2f%2fstackoverflow.com%2f -v 
Run Code Online (Sandbox Code Playgroud)

我尝试使用 Chrome 检查元素以复制curl请求,但它不起作用(可能它取决于 cookie 并且仅在特定时间段内有效)。

请注意,我需要使用用户名和密码而不是 cookie 登录。

linux bash curl

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

标签 统计

bash ×6

linux ×3

shell ×3

apache ×1

awk ×1

command-line ×1

curl ×1

line ×1

loops ×1

scripting ×1

split ×1

ubuntu ×1