问题标签 [unix-text-processing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
175 浏览

regex - 正则表达式匹配 nginx 位置块?

我正在开发一个 bash 脚本,该脚本可以将 nginx 位置块添加到采用 URL 的文件中。为了防止重复,如果它已经存在,这个脚本也会删除它们。

为了删除一个已经存在的块,我在下面制作了正则表达式。 ^location\s\/${URLGOESHERE} {[\s\S]*?(?=\n{2,})$

正则表达式需要匹配整个多行块,如下所示:

我希望正则表达式匹配块内的任何内容,直到右括号}文件内将有多个块,例如

我制作的正则表达式有效,但前提是块前后有空行。因此,对于我的正则表达式 URL2,pcgrep 将找不到 3(之前或之后没有换行符)和 4(文件末尾没有换行符)

我想知道是否可以使正则表达式完全匹配块而不需要这些空行。

0 投票
2 回答
83 浏览

awk - 根据重复的第一个单词删除行,忽略大小写

我有 1M个 fasttext 格式的词向量(忽略包含词汇大小和暗淡的第一行)。每行是一个单词,后跟 300 个数字,所有空格分隔,例如。

如何保留单词出现的第一行,忽略大小写,并删除所有其他行?例如,因为Word最先出现,所以WORD删除带有的行,输出为

我可以使用tr '[:upper:]' '[:lower:]' < wiki-news-300d-1M.vec将所有单词转换为小写,但这会破坏单词的大小写。如果包括数字在内的整行匹配,我知道如何删除所有重复的行,但这在这里没有用。我的 python 解决方案是保留一个存储每个单词的小写字母的字典,并根据该字典检查每一行的单词,但我对 awk/sed(甚至 grep)解决方案感到好奇。

0 投票
5 回答
73 浏览

sed - 提取字符串之间的子字符串

我有一个包含如下文本的文件:

我想提取###.

我想要的输出是这样的:

我尝试了以下方法:

这几乎可以工作,但似乎只抓取每行的第一个实例,所以我的输出中的第一行只抓取

而不是

0 投票
2 回答
53 浏览

csv - Miller - Ignore valid field names when using -N

I'm using miller to process some CSV files like so:

It works well, but some of the CSV files contain field names and some do not, which is why I'm using -N. In the files that have field names, they get printed in the output. You would think that having the headerless-csv-output bundled in the N flag they wouldn't, but they are. Maybe it's a bug? Anyway, how would do I prevent the field names from being printed? If the input needs to be altered somehow and piped in that's fine, but the output is being uniquely processed.

Here's the documentation I've been referencing:

my.csv

Expected output

Present output

0 投票
1 回答
47 浏览

unix-text-processing - 根据内容从文件中删除部分

如何config B2使用 bash 删除以下文件中包含的配置部分?sed使用或awk类似的任何快速解决方案?如果有帮助,不同的部分用空行分隔。

输入文件:

预期的输出文件:

0 投票
1 回答
98 浏览

sed - 用于清理 listener.ora 文件的 Shell 脚本

我们有如下的 listener.ora 文件

我想从文件中专门删除这个特定的块。

需要有关 unix 命令/shell 脚本的帮助,以在 oracle 数据库停用后删除确切的块...

0 投票
5 回答
82 浏览

csv - 如何在 bash 中将 TXT 文件格式化为结构化的 CSV 文件?

我想获得一些关于我的 Linux 服务器 (OpenSuse Leap 15.2) 上的 CPU 温度的信息。所以我写了一个脚本,它每 20 秒收集一次数据并将其写入一个文本文件。现在我已经删除了我不需要的所有垃圾数据(如“CPU Temp”等)。

现在我有一个这样的文件:

前两行分别是以 C 为单位的 CPU 温度读数和以 RPM 为单位的风扇速度。接下来的两行是相同测量值的另一个读数。

最后我想要这个结构:

我的问题是:Bash 脚本可以为我做到这一点吗?我尝试了sed和 Awk 的一些东西,但没有什么对我来说完美。此外,我想要一个 CSV 文件来制作图表,但我认为将文本文件转换为 CSV 文件不是问题。

0 投票
3 回答
66 浏览

unix-text-processing - 从文件中删除括号

如何使用 bash 脚本有效地从文件中删除括号(文件中的第一次出现[和最后一次出现])?所有嵌套在外部括号内并可能延伸多行的括号都应保留。可能存在前导或尾随空格。

内容file1

cat file1 | magicCommand

期望的输出


内容file2

cat file2 | magicCommand

期望的输出

0 投票
2 回答
71 浏览

awk - 如果下一行以单词字符开头,则用空格替换新行

我有一个看起来像的大文本文件

我想要一个像这样的输出

我尝试了一些奇怪的,明显错误的正则表达式,%s/\w*\n/ /g但无法真正理解。

0 投票
3 回答
165 浏览

awk - 如何从访问日志中提取文本?

我对此很陌生。我正在尝试从新文件中的访问日志中提取一些文本。
我的日志文件是这样的:

我想在一个新文件中以以下格式提取。

到目前为止,我已经设法完成了这个基本的 awk 命令:

这给了我以下输出: