【问题标题】:Add blank line before a certain phrase in a text file in Linux?在Linux中的文本文件中的某个短语之前添加空行?
【发布时间】:2015-06-05 22:50:58
【问题描述】:

我正在使用 Kali Linux,试图从 Nmap 中整理出一些输入。基本上,我从 NMap 进行了扫描,需要从中提取特定的信息。我可以使用以下命令显示我需要的一切:

cat discovery.txt | grep 'Nmap scan report for\|Service Info: OS:\|OS CPE:\|OS guesses:\|OS matches\|OS details'

基本上,我需要的每部分信息都以“[IP ADDRESS] 的 Nmap 扫描报告”开头

我想添加到我的命令中,让它在每次出现“Nmap”这个词之前创建一个空行,以清楚地分隔每个信息块。

有什么命令可以用来做这个吗?

【问题讨论】:

  • 到目前为止你尝试过什么?它不会是一个命令(尽管我打赌“sed”可以完成这项工作,尽管我没有那种经验),但更可能是一个将输出解析为您想要的格式的脚本。

标签: linux shell text grep


【解决方案1】:
sed '/Nmap/i
' file

这是i 之后的文字换行符

演示:在以“0”或“5”结尾的每一行之前添加一个换行符

seq 19 | sed '/0$\|5$/i
'
1
2
3
4

5
6
7
8
9

10
11
12
13
14

15
16
17
18
19

【讨论】:

    【解决方案2】:

    当然,你可以使用 Perl。

    perl -pe 's/^Nmap/\nNmap/'
    

    【讨论】:

    • 哇,太棒了,非常感谢!唯一的问题是它现在切断了字母 N(显示为 Map 而不是 Nmap) - 知道为什么会这样吗?
    • 嗯,它对我有用。如果没有复制和粘贴错误,那么我不知道,抱歉。
    • 啊,我的错误是我写的是 nMap 而不是 nNmap。再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    相关资源
    最近更新 更多