我正在创建一个 shell 脚本,其中,我需要过滤除自己的 grep 进程之外的进程。如果我使用:
echo "step1"
psout=`ps -aux | grep 'deluged'| grep '58846'`
echo "step2"
echo $psout
...
Run Code Online (Sandbox Code Playgroud)
然后停止脚本意味着step2不显示!和 $psout,输出空白。我不知道为什么。
如果我尝试使用 AND 和除了color:
$ ps -aux | grep -e 'deluged' -e '58846' -v "color"
grep: color: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用钥匙串:
ps -aux | grep -e "[d]eluged"."58846"
Blank OUTPUT
Run Code Online (Sandbox Code Playgroud)
简而言之,如何使用 AND 和除了自己的 grep 进程之外的单个 grep 查找进程?
我正在寻找引号内的字符串,其中 Linux 一词出现在位于引号内某处的括号之间。我必须使用正则表达式来做到这一点。我需要在 Linux 操作系统中执行此操作(使用 Virtual Box Terminal)。我使用了以下正则表达式:
egrep "\"([^"]*)?\(([^"]*)?Linux([^"]*)?\)([^"]*)?\"" [FILE]
Run Code Online (Sandbox Code Playgroud)
但问题是,我明白了
bash: syntax error near unexpected token '("
Run Code Online (Sandbox Code Playgroud)
每次。可能是什么问题?我在“ http://regexr.com/ ”中尝试了这个正则表达式,它工作正常,正则表达式没有任何问题。但是 Linux shell 总是会产生同样的问题......我在括号前使用了“\”,因为它们是元字符。我在双引号前面做的同样的事情......但它不起作用。有人可以帮我吗?
我正在使用 Ubuntu 14.04 LTS。
我正在玩 grep,我遇到了一个问题,将 grep 管道传递到 ls。所有示例仅限于当前目录,非递归。
如果我想列出名称中包含数字的所有文件:
ls | grep [0-9]
Run Code Online (Sandbox Code Playgroud)
如果我想列出所有包含“d”、“h”、“m”作为首字母的文件:
ls | grep ^[dhm]
Run Code Online (Sandbox Code Playgroud)
如果我想列出所有包含数字作为首字母的文件:
ls | grep ^[0-9]
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用!inside 时[],!不包括:
user@host:~$ ls | grep [0-9]
1.log
2.log
3.log
hs_err_pid4015.log
Untitled 1.odt
v1.odt
user@host:~$ ls | grep [!0-9]
1.log
2.log
3.log
hs_err_pid4015.log
Untitled 1.odt
v1.odt
Run Code Online (Sandbox Code Playgroud)
如果我尝试将它与 ^
user@host:~$ ls | grep ^[0-9]
1.log
2.log
3.log
user@host:~$ ls | grep ^[!0-9]
1.log
2.log
3.log
Run Code Online (Sandbox Code Playgroud)
我花了几天时间阅读有关 grep 和通配符的其他帖子、手册页、文章等,但我无法弄清楚。我试过把它们放在'and 中 …
我有包含不同类型文本格式的文件,我的目标是仅提取 HTML 部分并使用此 HTML 代码创建一个文件。我认为使用grepor是可能的awk。我的文件还包含这样的行:
Sender name `<test@email.com>`
Run Code Online (Sandbox Code Playgroud)
我写了这个脚本cat file1.html | grep -E "<[^>]*>"。但问题是它也将行输出为Sender name等。我只想在<html>标签之后提取内容。所以这对我没有用:
Return-Path: <test@test.com>
for <test@localhost> (single-drop); Thu, 21 Sep 2017 18:34:07 +0400 (+04)
Return-path: <test@test.com>
(envelope-from <test@test.com>)
References: <test@test.com>
From: test user <test@test.com>
X-Forwarded-Message-Id: <test@test.com>
Message-ID: <test@test.com>
In-Reply-To: <test@test.com>
Run Code Online (Sandbox Code Playgroud) 所以说我在 /home/folder1 中,它包含很多 .txt 文件。如果我想使用grep -r "xxx" ___,我将如何使 ___ 表示我只希望 grep 命令查看我所在的文件夹?
我有一个名为 abc.txt 的文件,其内容如下:
1: It is a shell script
2: There are few lines in this file
3: I am good with programming in C, but beginner in shell
4: We are going towards end of file
5: END OF FILE
Run Code Online (Sandbox Code Playgroud)
我想迭代地读取每个文件,并且在每次迭代中,我想将这行与“我擅长 C 编程,但初学者在 shell 中”进行比较,然后进行一些处理。
任何帮助将不胜感激。谢谢!
谁能帮我这个:
我试图通过匹配字符串来提取时间戳。为此,我使用了 grep/awk 命令的组合。由于刺痛在 [1] 之前有 4 个 spces,在 [1] 之后有 1 个,我很困惑如何解决它。我是编程新手,所以在这里需要一些帮助。
IS="$(grep 'Starting [1] TaskInit' process.log | awk '{print $4}')"
echo "$IS"
Run Code Online (Sandbox Code Playgroud)
目的:它应该匹配 process.log 文件中的字符串,并且应该打印出与该行相关的时间戳。
我有以下 bash 代码:
DNS_RECORD_NAME="\"_acme-challenge\""
linode-cli domains records-list 1020562 --pretty --json |
grep '"name": $DNS_RECORD_NAME'
Run Code Online (Sandbox Code Playgroud)
输出应该是这样的:
"name": "_acme-challenge"
Run Code Online (Sandbox Code Playgroud)
但我得到了空的结果。如果我更改以下行
grep '"name": $DNS_RECORD_NAME"
Run Code Online (Sandbox Code Playgroud)
到
grep '"name": "_acme-challenge"'
Run Code Online (Sandbox Code Playgroud)
我得到了正确的输出。
但我需要使用变量。如何在 grep 中使用字符串变量(包含双引号)?
我正在使用 Ubuntu 16.04。
我想搜索某个词,但我也希望在终端上输出包含该词的整个文件,以便我可以看到该词在文件中的位置。但是,当我使用 时grep,它只会显示包含该单词的特定句子,而不是整个文件。
我可以使用什么命令来搜索一个单词,同时还可以显示整个文件以及该单词所在的位置?
作为大学课程的一部分,我试图在 500 个文件的列表中隐蔽地搜索一个字符串,然后将找到的这些项目复制到一个新文件夹中。
我可以毫无问题地找到文件
grep -rnw '/home/steve/Desktop.CEDFOR.arnold-j/sent/' -e 'vladimir.gorny@enron.com'
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将结果通过管道传送到名为 Suspicious 的文件夹时,它会出错。
我正在使用的完整代码(基于几年前报告的类似问题)是
grep -rnw '/home/steve/Desktop.CEDFOR.arnold-j/sent/' -e 'vladimir.gorny@enron.com' | xargs -0 cp -t /home/steve/Desktop/CEDFOR/arnold-j/Suspicious/
Run Code Online (Sandbox Code Playgroud)
但是,错误指出不存在此类文件夹或文件。我可以确认文件夹 /home/steve/Desktop/CEDFOR/arnold-j/Suspicious/ 肯定存在。
澄清...我想将文件复制到“可疑”文件夹中,以便稍后查看。
我哪里错了?