标签: text-processing

如何获得彼此平行的两个 cat 命令的输出

如果我运行cat file1.txt,我有:

linux mint
ubuntu
cent-os
fedora
debian
kali linux
arch linux
kubuntu
open suse
deepin
parrot os
Run Code Online (Sandbox Code Playgroud)

然后cat file2.txt给出:

linux mint
cent-os
fedora
kali linux
arch linux
kubuntu
open
deepin
parrot
ubuntu
debian
Run Code Online (Sandbox Code Playgroud)

但是如果我想输出这样的结果怎么办?

file1.txt                      file2.txt

linux mint                     linux mint
ubuntu                         cent-os
cent-os                        fedora
fedora                         kali linux
debian                         arch linux
kali linux                     kubuntu
arch linux                     open
kubuntu                        deepin
open suse                      parrot
deepin                         ubuntu
parrot os                      debian
Run Code Online (Sandbox Code Playgroud)

command-line text-processing

11
推荐指数
2
解决办法
641
查看次数

替换 sed 中的点 (.)

所以实际的问题是 - 有没有人知道如何删除 M-BM-特殊字符而不冒丢失其他字符的风险?

我有一串文本:

" . . ."
Run Code Online (Sandbox Code Playgroud)

那是

space dot space dot space dot
Run Code Online (Sandbox Code Playgroud)

我正在尝试将此字符串在文本文件中的所有出现替换为

"..."
Run Code Online (Sandbox Code Playgroud)

那是

dot dot dot
Run Code Online (Sandbox Code Playgroud)

我试图用 sed 做:

sed -r 's:\s\.\s\.\s\.:...:g' -i sed-dots
Run Code Online (Sandbox Code Playgroud)

不幸的是,它甚至不会改变输入文件。文件:https : //www.dropbox.com/s/46zmiruy3ln85a1/sed-dots

当我尝试在文本编辑器(我使用 geany)中替换相同的字符串时,它会被找到并正确替换。

我能想到的唯一原因是这些空格中的一些(或全部)不是真正的空格,而是一些特殊字符。

有谁知道如何使用 sed(或任何其他命令行工具)查找和替换该字符串?请在我的文件上测试您的想法,因为问题并不像看起来那么明显 - 这就是我询问它的原因。

使用cat -Amyfile后,这些空格不是空格,而是M-BM-特殊字符似乎有问题。使用任何.建议用于搜索的符号都不是一个好主意,因为存在一些其他字符会被删除的风险。

sed text-processing

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

删除文本文件中的重复行.....?

如何通过命令提示符删除文本文件中的重复行?

例如:我有一个 10MB 的文本文件,我只想保留一行My line,但文本文件中的某处有 2My line秒。

command-line text-processing

10
推荐指数
2
解决办法
6711
查看次数

使用 bash 获取路径字符串的一个元素

我有一个 ASCII 文件,其中包含我通过运行读取的文件路径:

while read p; do echo $p; done < filelist.txt
Run Code Online (Sandbox Code Playgroud)

该文件包含具有以下模式的文件路径:

./first/example1/path
./second/example1/path
./third/example2/path
Run Code Online (Sandbox Code Playgroud)

如何获取路径字符串的特定部分(从//),例如我需要获取打印的输出:

first
second
third
Run Code Online (Sandbox Code Playgroud)

并且

example1
example1
example2
Run Code Online (Sandbox Code Playgroud)

我确信有一种方法可以使用正则表达式 and 来做到这一点sed,但我不熟悉它。

command-line bash text-processing

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

awk - 如何打印文件中前 n 行的字符数?

我有一个命令:

$ awk '{ print length($0); }' /etc/passwd
Run Code Online (Sandbox Code Playgroud)

它打印passwd文件中每一行的字符数:

52
52
61
48
81
58
etc.
Run Code Online (Sandbox Code Playgroud)

如何仅打印前 n 行的字符数?

例如 - 对于前 3 行,它会给出如下内容:

52
52
61
Run Code Online (Sandbox Code Playgroud)

command-line awk text-processing

10
推荐指数
3
解决办法
7975
查看次数

将 grep 输出限制为短行

我经常使用 grep 来查找具有如下特定条目的文件:

grep -R 'MyClassName'
Run Code Online (Sandbox Code Playgroud)

好消息是它返回文件、它们的内容并将找到的字符串标记为红色。不好的是,我也有很大的文件,其中整个文本都写在一个大的单行中。现在,在这些大文件中查找文本时,grep 输出过多。有没有办法将输出限制为左侧和右侧的 5 个单词?或者将输出限制为左右各 30 个字母?

command-line grep text-processing

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

复制并粘贴一堆不同名称的文件

我有一堆同名的文本文件

foo_bar_abc_1_01_geh_original.in
foo_bar_abc_1_02_geh_original.in
foo_bar_abc_1_03_geh_original.in
...
...
foo_bar_abc_1_1000_geh_original.in
Run Code Online (Sandbox Code Playgroud)

我想复制(并保留原始文件)每个文件并粘贴到不同的名称(在同一文件夹中),例如,

foo_bar_abc_1_01_geh_copy.in
foo_bar_abc_1_02_geh_copy.in
foo_bar_abc_1_03_geh_copy.in
...
...
foo_bar_abc_1_1000_geh_copy.in
Run Code Online (Sandbox Code Playgroud)

如何使用简单的脚本执行此操作?

command-line cp text-processing

10
推荐指数
2
解决办法
1804
查看次数

比较源代码文件,忽略格式差异(如空格、换行符...)

我正在寻找一个可以比较两个 C++ 源代码并找到代码意义差异的应用程序(以比较可能以不同方式重新格式化的版本)。至少,能够忽略不影响源功能的空格、制表符和换行符的变化的东西(请注意,换行符是否被视为空格取决于语言,而 C 和 C++ 这样做)。并且,理想情况下,可以准确识别所有代码意义差异的东西。我在 Ubuntu 下。

按照diff --help | grep ignore,我希望diff -bBwZ合理地完成这项工作(我预计会得到一些假阴性,稍后再处理)。然而,事实并非如此。

如果我有以下带有片段的文件

test_diff1.txt

    else if (prop == "P1") { return 0; }
Run Code Online (Sandbox Code Playgroud)

和 test_diff2.txt

    else if (prop == "P1") {
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

然后

$ diff -bBwZ test_diff1.txt test_diff2.txt
1c1,3
<     else if (prop == "P1") { return 0; }
---
>     else if (prop == "P1") {
>         return 0;
>     }
Run Code Online (Sandbox Code Playgroud)

而不是空结果。

使用代码格式化程序作为两个输入的“过滤器”可能会过滤掉这些差异,但结果输出必须与原始输入联系起来,以便最终报告差异以保留实际的文本和行号。因此,无需正确编译器即可实现目标......不过,我不知道是否有可用的东西。

可以达到目标diff吗? …

diff text-processing

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

如何将图形图像转换为 ASCII 艺术?

我想要一个由字符组成的终端中的自定义图像,有我可以使用的程序吗?

具体来说,我学校的机器人标志中的齿轮 。

command-line image-processing text-processing

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

将 .txt 文件转换为 .csv 文件,每 3 行一行

假设我有一个这样的txt文件:

Mario
mario@me.com
+399038259953
Luigi
luigi@live.com
+395902385093
Yoshi
yoshi@yahoo.com
+81293565291
Run Code Online (Sandbox Code Playgroud)

[依此类推 300 行...]

如何制作具有三行(姓名、电子邮件、电话号码)的 .ods(或 .xls 或 .csv,没关系)文件?我需要它,以便我可以轻松地将其转换为 .vcf 文件,并将这些数字批量保存在我的手机中。

谢谢

command-line libreoffice csv text-processing

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

标签 统计

text-processing ×10

command-line ×8

awk ×1

bash ×1

cp ×1

csv ×1

diff ×1

grep ×1

image-processing ×1

libreoffice ×1

sed ×1