我正在拼命寻找一个看似非常简单的问题的答案:我想从txt文件中删除所有匹配的模式。 我在Mac OS Catalina下使用以下命令:
sed 's/^M//' $filename > text_clean.txt
$filename
包含我在其中执行操作的txt文件的名称。
“ ^ M”模式代表Mac OS下的换行符:我已经测试了几乎所有内容,这是唯一可行的解决方案。
因此,正在发生的事情是以下命令完成了该工作:
sed 's/^M/AAAAA/' $filename > text_clean.txt
但这只是部分原因是因为它被替换为“ AAAAA”字符,这不是我想要的。
当执行sed's / ^ M //'$ filename> text_clean.txt时,结果文件完全不变,因此我猜测该命令未执行(但是为什么?),或者我必须插入因为我使用的是Mac OS Shell(但哪个是?),所以它是一个特定的“空”字符。
我还测试了gsed(安装了自制软件后)...,但结果与上面严格相同。
我想我缺少明显的东西,但是我真的看不到!
答案 0 :(得分:0)
让我们尝试使用grep的另一种方法。
我已经如下创建了一个test.txt文件
bash-3.2$ cat test.txt
AA
BB
CC
MA
MB
BM
CM
MU
MZ
SH
JH
HJ
12M
M45
M*&
M#$
12
使用grep
bash-3.2$ grep -v ^M test.txt > tmp.txt; mv tmp.txt test.txt
使用“ ^ M”进行grep,即所有以“ M”开头的行,然后使用反选项“ -v”选择其余行。将grep的输出移到tmp.txt文件中,然后将该文件替换为原始文件。
bash-3.2$ cat test.txt
AA
BB
CC
BM
CM
SH
JH
HJ
12M
12
祝你好运。