如果我运行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) 所以实际的问题是 - 有没有人知道如何删除 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-特殊字符似乎有问题。使用任何.建议用于搜索的符号都不是一个好主意,因为存在一些其他字符会被删除的风险。
如何通过命令提示符删除文本文件中的重复行?
例如:我有一个 10MB 的文本文件,我只想保留一行My line,但文本文件中的某处有 2My line秒。
我有一个 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,但我不熟悉它。
我有一个命令:
$ 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) 我经常使用 grep 来查找具有如下特定条目的文件:
grep -R 'MyClassName'
Run Code Online (Sandbox Code Playgroud)
好消息是它返回文件、它们的内容并将找到的字符串标记为红色。不好的是,我也有很大的文件,其中整个文本都写在一个大的单行中。现在,在这些大文件中查找文本时,grep 输出过多。有没有办法将输出限制为左侧和右侧的 5 个单词?或者将输出限制为左右各 30 个字母?
我有一堆同名的文本文件
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)
如何使用简单的脚本执行此操作?
我正在寻找一个可以比较两个 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吗? …
我想要一个由字符组成的终端中的自定义图像,有我可以使用的程序吗?
具体来说,我学校的机器人标志中的齿轮 。
假设我有一个这样的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 文件,并将这些数字批量保存在我的手机中。
谢谢
text-processing ×10
command-line ×8
awk ×1
bash ×1
cp ×1
csv ×1
diff ×1
grep ×1
libreoffice ×1
sed ×1