相关疑难解决方法(0)

无用的猫吗?

这可能是许多常见问题解答 - 而不是使用:

cat file | command
Run Code Online (Sandbox Code Playgroud)

(这被称为无用的猫),正确的方式应该是:

command < file
Run Code Online (Sandbox Code Playgroud)

在第二,"正确"的方式 - 操作系统不必产生额外的过程.
尽管知道这一点,我继续使用无用的猫有两个原因.

  1. 更美观 - 我喜欢数据仅从左到右均匀移动.而且它更容易更换cat别的东西(gzcat,echo,...),添加第二个文件或插入新的过滤器(pv,mbuffer,grep...).

  2. 我"觉得"在某些情况下可能会更快.更快,因为有2个进程,1st(cat)执行读取而第二个执行任何操作.它们可以并行运行,这意味着有时可以更快地执行.

我的逻辑是否正确(第二个原因)?

shell command-line cat

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

如何使用grep,regex或perl提取模式后面的字符串

我有一个看起来像这样的文件:

    <table name="content_analyzer" primary-key="id">
      <type="global" />
    </table>
    <table name="content_analyzer2" primary-key="id">
      <type="global" />
    </table>
    <table name="content_analyzer_items" primary-key="id">
      <type="global" />
    </table>
Run Code Online (Sandbox Code Playgroud)

我需要在后面的引号中提取任何内容name=,即content_analyzer,content_analyzer2content_analyzer_items.

我在Linux机器上这样做,所以使用sed,perl,grep或bash的解决方案很好.

regex perl text-extraction sed html-parsing

81
推荐指数
4
解决办法
20万
查看次数

获取字符后的字符串

我有一个看起来像这样的字符串:

 GenFiltEff=7.092200e-01
Run Code Online (Sandbox Code Playgroud)

使用bash,我想在=角色后面得到数字.有没有办法做到这一点?

string bash extract

67
推荐指数
5
解决办法
14万
查看次数

正则表达式匹配字符串后获取单词

以下是内容:

Subject:
    Security ID:        S-1-5-21-3368353891-1012177287-890106238-22451
    Account Name:       ChamaraKer
    Account Domain:     JIC
    Logon ID:       0x1fffb

Object:
    Object Server:  Security
    Object Type:    File
    Object Name:    D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
    Handle ID:  0x11dc
Run Code Online (Sandbox Code Playgroud)

我需要捕捉该行中单词之后的Object Name:单词.这是D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log.我希望有人可以帮助我.

^.*\bObject Name\b.*$ 匹配 - 对象名称

regex expression regex-negation regex-lookarounds

58
推荐指数
4
解决办法
21万
查看次数

如何cURL经过身份验证的Django应用程序?

我有一些我想用cURL测试的API.我尝试按如下方式进行GET:

curl --user username:password --request GET http://my_domain/get_result/52d6428f3ea9a008358ad2d8/
Run Code Online (Sandbox Code Playgroud)

在服务器上,它显示'302'(这意味着重定向,对吧?).我猜它被重定向到'login /'页面.

完成这项工作的正确方法是什么?

编辑:我试过:

curl -c cookies.txt -b cookies.txt -L -d @login_form.txt http://my_domain/login/
Run Code Online (Sandbox Code Playgroud)

其中login_form.txt包含"username = username&password = password&this_is_the_login_form = 1".不行.没有生成cookies.txt文件.并且没有登录发生.你能告诉我你是如何使用cURL登录Django的吗?

authentication django rest curl

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

在同一行上的特定单词后面提取一个单词

如何在Linux(csh)中提取特定单词后面的单词?更确切地说,我有一个文件,其中包含一行,如下所示:

[some useless data] --pe_cnt 100 --rd_cnt 1000 [some more data]
Run Code Online (Sandbox Code Playgroud)

我想提取单词100之后的数字--pe_cnt.我不能使用sed,只有当你想要提取整行时才能使用.也许我可以使用awk?

此外,我有多个文件具有不同的值而不是100所以我需要一些提取值但不依赖于值的东西.

linux bash csh

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

与cat相比,Bash读取循环速度极慢,为什么?

一个简单的测试脚本:

while read LINE; do
        LINECOUNT=$(($LINECOUNT+1))
        if [[ $(($LINECOUNT % 1000)) -eq 0 ]]; then echo $LINECOUNT; fi
done
Run Code Online (Sandbox Code Playgroud)

当我这样做时cat my450klinefile.txt | myscript,CPU锁定为100%,并且每秒可以处理大约1000行.大约5分钟处理cat my450klinefile.txt >/dev/null半秒钟的事情.

有没有更有效的方法来实现这一点.我只需要从stdin读取一行,计算字节数,然后将其写入命名管道.但即便是这个例子的速度也很慢.

每1Gb的输入行我需要做一些更复杂的脚本操作(关闭并打开一些数据被输入的管道).

linux bash shell performance

7
推荐指数
2
解决办法
7926
查看次数

我指定的grep字符串

我正在使用grep,我想在我指定的字符串后获取数据.我希望在我指定之后得到字符串.如果我grep"label:"我得到"label:blue label:red label:green".我想得到的颜色.如果我说grep -o我得到所有的标签.如果我说-l它说(标准输出).任何的想法?

linux grep

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

如何使用grep,sed和awk在找到的模式后打印下一个单词?

例如,假设我有logfile.txt,其中包含"这是一个示例文本文件"

我的模式是"样本"如何在logfile.txt中获取示例旁边的单词.

linux bash awk grep sed

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

linux bash工具从属性文件中读取属性

我希望能够运行命令以从属性文件中获取属性。所以如果我的属性文件是 property.props 并且有

username=dsollen
password=letMeIn
linux-skills=newb
Run Code Online (Sandbox Code Playgroud)

我想有一种快速的方法来拉出属性以管道到其他命令。所以

 ./myProgram -v -p `getProp property.props password`
Run Code Online (Sandbox Code Playgroud)

或类似的东西; 不确定我使用的是正确的,但这是一个不同的 newb linux 问题供以后使用 :)

我知道我可以用 grep 和 cut/awk/sed/whatever 的组合来做到这一点,但我想知道是否有一个已经存在的工具“知道”如何读取常见的属性文件格式并执行类似的操作?如果没有,我可以写一些东西添加到我的脚本文件夹中,如果已经存在更好的轮子,就不想重新发明轮子。

linux bash

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

将 PATH 环境变量导入到使用 cron 启动的 Bash 脚本中

创建 Bash 脚本时,我总是在开头有一行定义PATH环境变量。我最近发现这并不能使脚本非常可移植,因为PATH不同版本的 Linux 的变量是不同的(在我的例子中,我将脚本从 Arch Linux 移动到 Ubuntu 并收到错误,因为各种可执行文件不在同一位置)。

是否可以将PATH登录 shell 定义的环境变量复制到当前的 Bash 脚本中?


编辑: 我发现我的问题引起了一些混乱,导致一些人认为我想PATH用 bash 脚本更改登录 shell 的环境变量,这与我想要的完全相反。

这是我目前在我的 Bash 脚本之一顶部的内容:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
# Test if an internet connection is present
wget -O /dev/null google.com
Run Code Online (Sandbox Code Playgroud)

我想将第二行替换为将登录 shell复制脚本环境中的内容:PATH

#!/bin/bash
PATH=$(command that copies value of PATH from login shell)
# Test if an internet connection is present
wget -O /dev/null google.com
Run Code Online (Sandbox Code Playgroud)

编辑2:很抱歉我的重大遗漏。我忘了提及,相关脚本正在通过 cron 按计划运行。Cron …

linux bash cron path

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

使用 bash 解析 .env 文件

我有 .env 文件,我正在尝试从中解析值。

我跑了这个

cat .env | grep PORT=

我有

PORT=3333

如何获取特定键的值?

linux bash shell environment-variables

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