AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[grep](unix)

Martin Hope
Tim Osborn
Asked: 2025-02-13 20:22:38 +0800 CST

grep -c 给出的计数与 grep | wc -l 不同

  • 7

我期望这两个命令能够给出文件中包含字母的行数的相同数量:

grep -c '[A-Z,a-z]' archive_for_TO.050225
11873
grep '[A-Z,a-z]' archive_for_TO.050225 | wc -l
11859

文件太大,无法在此处发布,但我想知道是否有一些常见的情况/解释,说明为什么第二个命令显然比第一个命令少找到 14 行匹配行。例如,它是否表明文本文件在行分隔方式(字符返回或换行或两者)方面存在一些不一致之处?

grep
  • 1 个回答
  • 118 Views
Martin Hope
J Telep
Asked: 2025-01-30 04:19:30 +0800 CST

结合 grep 与 find 命令

  • 5

我正在尝试从 rsyslog 目录中删除垃圾文件(主要是许多空子目录或包含单个部分日志文件的子目录),但这些垃圾文件的名称各不相同,从看起来像被截断的单词到 10 个连字符。我认为最简单的方法是简单地查找我需要的任何东西,然后将其他一切都说成是垃圾,但这就是事情变得棘手的地方。

我需要保持

  • 每当我创建一个新的 rsyslog 监听器时,都会有 5-10 个默认文件/子目录
  • 任何目录,只要是主机名(任何以“vd”或“vp”开头的子目录)
  • 任何为 IP 地址的目录。

其余内容均可删除。

我考虑过只使用 grep 并排除与这些搜索词匹配的任何内容,然后将目录列表放入文本文件中,我可以将其用作要删除的输入列表,但我在输入主机名时遇到了问题,只要我说“vp*”,我什么也得不到。此外,我用来提取 IP 地址的字符串也在抓取日期。

我当前的搜索如下:

egrep -av 'HEAD|GET|version|putenv|id|default|POST|status|rsyslog_stats' |
    grep -E "[^^][0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}" |
    grep -av "vp*" |
    grep -av "vd*"

如果有人有任何建议,我将不胜感激,因为如果我能让它工作,我可以每 15-30 分钟运行一次,并保持我的所有 rsyslog 侦听器目录清洁,并且不会将太多垃圾吸入我的 Splunk 索引中。

谢谢!

grep
  • 1 个回答
  • 52 Views
Martin Hope
Zac Helmberger
Asked: 2025-01-16 10:55:24 +0800 CST

搜索文件中的唯一条目

  • 5
该问题已从 Server Fault迁移,因为它可以在 Unix & Linux Stack Exchange 上找到答案。3 天前迁移 。

我正在使用 Arch Linux/Debian Linux,想要一个 ASCII txt 文件中的唯一“标识符”列表。以下是我想要缩减的数据片段:

... (Received from VRW): wind ...
... (Received from 1a00): air_ ...
... (Received from 5710): air_ ...
... (Received from ####): air_ ...
... (Received from 15d8): air_ ...
... (Received from ####): air_ ...
... (Received from 6e9e): baro ...
... (Received from 6e9e): volt ...
... (Received from 6e9e): wind ...
... (Received from 6e9e): air_ ...

由于文件很大且有大量重复的“标识符”,我只想输出唯一的标识符,以便输出如下所示:

... (Received from VRW): wind ...
... (Received from 1a00): air_ ...
... (Received from 5710): air_ ...
... (Received from ####): air_ ...
... (Received from 15d8): air_ ...
... (Received from 6e9e): baro ...

更好的做法是简单地列出唯一标识符,例如,,,15d8等等。但我认为这会困难得多。6e9eVRW

根据我以前尝试过的类似问题的建议:

grep "(Received from" datafile.txt

并得到了大量的标识符列表,其中大多数是重复的。

我也尝试过:

grep "(Received from" datafile.txt | sort -u

但不能说这是否有任何区别

我也尝试过:

parallel --tag --lb grep "Received from" {} | perl -ne '$seen{$_}++ or print;' ::: Data1.txt

这可能显示了我对这些问题的无知程度。

grep
  • 3 个回答
  • 50 Views
Martin Hope
athos
Asked: 2024-12-05 18:36:20 +0800 CST

为 grep 创建别名并包含目录

  • 5

我经常使用 grep 在一堆文件夹中搜索一些文本,例如

grep --include='*.csv' -nRHI --color=always 'pattern' Folder1 Folder2  

我想创建一个别名,例如

alias MyGrep="grep --include='*.csv' -nRHI --color=always Folder1 Folder2"

这样下次需要搜索时,我只需要

MyGrep 'pattern'

然而,这不起作用,因为搜索模式必须位于文件夹列表之前。

有没有可以使用别名的解决方法?

附言:我可以使用函数来代替,例如

function MyGrep() { grep --include='*.csv' -nRHI --color=always "$@" Folder1 Folder2;}

然后我可以跑

MyGrep pattern

但好奇是否可以通过别名解决。

grep
  • 1 个回答
  • 21 Views
Martin Hope
Dominic van der Zypen
Asked: 2024-11-21 21:51:59 +0800 CST

为什么特殊字符 `?` 在 grep 中需要转义,而 `.` 或 `*` 则不需要?

  • 10

我当前工作目录中的唯一文件名为test.txt,其内容很简单:

This is a little test file.
  • 执行
    grep -in * -e 'te.?t file'
    
    没有匹配。
  • 但转义?有效:
    grep -in * -e 'te.\?t file'
    
    给出匹配

疯狂:有了明星*,事情就反过来了!

  • 无需转义:
    grep -in * -e 'te.*t file'
    
    给出匹配
  • 并且转义*不起作用:
    grep -in * -e 'te.\*t file'
    
    没有匹配

为什么元字符在转义方面有?区别*对待?

grep
  • 2 个回答
  • 180 Views
Martin Hope
Lucas Rey
Asked: 2024-11-20 13:24:46 +0800 CST

Tshark grep 特定字段

  • 5

我正在使用 tshark 动态解码 SMPP 协议,例如:

tshark -i any -V -Y smpp

这将实时显示每一个 SMPP 数据包,例如

Short Message Peer to Peer, Command: Submit_sm, Seq: 8475778, Len: 215
    Length: 215
    Operation: Submit_sm (0x00000004)
    Sequence #: 8475778
    Service type: (Default)
    Type of number (originator): Alphanumeric (0x05)
    Numbering plan indicator (originator): Unknown (0x00)
    Originator address: \123\110\123\123\123aaa\123
    Type of number (recipient): Unknown (0x00)
    Numbering plan indicator (recipient): ISDN (E163/E164) (0x01)
    Recipient address: 44123456789
    .... ..00 = Messaging mode: Default SMSC mode (0x00)
    ..00 00.. = Message type: Default message type (0x00)
    00.. .... = GSM features: No specific features selected (0x00)
    Protocol id.: 0x43

有没有办法 grep 特定字段并仅输出这些字段?我尝试过:

tshark -i any -V -Y smpp | grep 'Operation|Type of number|Numbering plan indicator|Recipient address'

但它不起作用。我也尝试过:

tshark -i any -V -Y smpp -T fields -e 'smpp.dest_addr_ton' -e 'smpp.destination_addr'

但这只会输出值,而我想要输出类似的内容;

Type of number (recipient): Unknown (0x00)
Numbering plan indicator (recipient): ISDN (E163/E164) (0x01)
Recipient address: 44123456789

有人能给出建议吗?谢谢,卢卡斯

grep
  • 1 个回答
  • 11 Views
Martin Hope
Sistemas Libsur
Asked: 2024-09-17 02:41:42 +0800 CST

正则表达式检测两个连续的行,这些行具有相同的单词和相同的顺序,但在前导、尾随和单词之间的空格不同

  • 5

我想找到一个正则表达式或 perl 单行代码来检测两行连续的行,这些行包含相同的单词且顺序相同,但前导空格、尾随空格和单词之间的空格数量可能因行而异。正则表达式必须排除那些不匹配的行。

我使用这个正则表达式来检测相同的连续行,
^\s*(.*\S)(\s\n*\1)+$
当一行与另一行之间的空格量不同时,它会失败。

我有这个示例文本

Mary has a little lamb. The live near the mountain.
Mary has a little lamb. The live near the mountain.

vrfgrgru hfiughf iujhfuihgifughuir nuhuvhfug

Mary has  a little lamb. The live near the mountain.
  Mary has a little lamb. The live near the mountain.

 Mary has a little lamb.  The live near the mountain.
Mary has a little lamb. The live near the mountain.

fghurhg bojghirejyohi ndhguhyituhgi
gbshbsiughsf bnighriugh hurhgiurhgriu

 Elvis was the greatest singer of all time. He has 18 number one in billboard charts.
Elvis was the greatest singer  of all time. He has 18 number one in billboard charts.

sgfuhgdugusd vfjsng orjgoergo ejfio dsmnjn
fbdhsbfgdbhhbfhdsfdf

Mary has a little lamb. The live near the mountain.
 Mary has a little lamb. The live near the mountain.

gsete gerttrb oijoijoijoijoijoiojo gogoerijoi

jhoiyrei  erogjrijgtrio noifdo mkooi 

This has been the coldest winter in the last 20 years.
 This has  been the coldest winter in the  last 20 years.

无论行中有多少个空格,正则表达式都应该显示包含相同信息的连续行。

没有三个连续的并且匹配的行之间没有空行。

grep
  • 1 个回答
  • 89 Views
Martin Hope
An5Drama
Asked: 2024-07-27 13:29:47 +0800 CST

是否有一个正则表达式工具仅遵循 BRE 并且在未定义时抛出错误?

  • 5

我正在阅读《灵活性软件设计 (SDF)》。练习 2.10 要求实现BRE 和 ERE 的翻译器。本书使用像 ERE 中grep那样测试翻译的字符串(a.c)来捕获类似abc或 的内容adc。

我使用 Arch Linux。


根据POSIX 规范9.3.3 BRE 特殊字符,\+不受 BRE 支持。

但是man grep“基本与扩展正则表达式”允许\+使用默认选项 BRE。

上述差异似乎是由此规范问题(此 QA的参考)暗示的:

BRE 对应于 ed 或historical grep 类型

不过ed好像也支持\+。


(已编辑:此段内容有误,因为启用选项 b 时,该网站根本不符合 BRE。(ab)而不是\(ab\)将匹配“ab”。)https://www.regexplanet.com/advanced/postgresql/index.html可以支持单纯的 BRE,但它有点慢,并且不能轻易地合并到 Scheme 代码中(我正在学习 SICP 和 SDF,所以我没有检查 Scheme 中的 Http 实现。上面的书使用 shell 来运行grep)。我使用表达式a\+c和输入abc在启用选项 b 的情况下进行测试。它显示“regex_matches()”为“(none)”。

那么是否有一个正则表达式工具完全遵循BRE?

grep
  • 1 个回答
  • 123 Views
Martin Hope
John Gordon
Asked: 2024-07-18 23:49:34 +0800 CST

使用 grep 模式在代码中查找单词

  • 3

我正在寻找一个 grep 模式来查找某些代码中某个单词的出现情况(如果重要的话,是 Python)。

我想忽略较长的单词、字符串或注释中的出现的情况(如果可能的话)。

所以如果我有这个 Python 代码:

Variable = 5
print(Variable)
MyVariablePlusOne = 6
description = "This is Variable"
# I love Variable

Variable我想要一种只匹配前两行的grep 方法。

grep
  • 2 个回答
  • 60 Views
Martin Hope
palmasd1
Asked: 2024-06-02 21:42:21 +0800 CST

是否可以在没有额外变量的情况下读取用户输入?

  • 4

我想在 Nginx 配置文件中 grep 一个 IP 地址。我想使用命令输入 IP 地址read,但不想将输入存储在附加变量中。所以我想要这样的东西:

grep -ir $(read) /etc/nginx/

使用read内部论证的正确方法是什么?

grep
  • 1 个回答
  • 68 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve