当前位置:网站首页 > 自然语言处理(NLP) > 正文

批处理读取txt内容(批处理读取文本内容)



快捷链接

使用 sed 命令

使用 awk 命令替换文本

使用 Vim Ex 模式替换文本

使用 Bash 脚本

使用 tr 命令替换一组字符

使用 perl

手动逐行编辑配置文件或更新大型文档可能会花费大量时间。然而,使用像 sed、awk、Vim 等命令行工具,您可以使搜索和替换过程快速高效。

使用 sed 命令

想要快速替换文本?使用sed 命令。使用 sed,您可以在文件中查找和修改文本,处理从简单替换到复杂的文本操作等所有内容。

假设您有一个名为 example.txt 的文件,其中包含单词“Linux”,并且您决定将其替换为“Windows”。要执行此操作,请运行:

sed 's/Linux/Windows/g' example.txt


这里,s标志表示替换,g标志允许 sed 在每行上替换所有出现的模式。

前面的命令不会直接修改原始文件;它仅在终端中显示修改后的输出。但是,如果您想直接操作原始文件,请使用-i标志:

sed -i 's/Linux/Windows/g' example.txt

-i标志直接在文件中进行更改,而不仅仅是显示输出。

在进行更改之前想要备份您的文件?向-i标志添加扩展名:

sed -i.bak 's/Linux/Windows/g' example.txt

这会在进行任何更改之前创建一个叫 example.txt.bak 的备份文件。

但是,如果您希望原始文件保持不变呢?您可以创建一个新文件并使用重定向运算符将修改后的输出保存到那里。

例如,要将输出发送到单独的文件,请使用:

sed 's/Linux/Windows/g' example.txt > file.txt

使用复杂的正则表达式模式与 sed 一起使用,使您能够控制在具有重复内容的较大文件中要替换的内容。要使用单个命令来替换多个实例,请运行:

sed -i 's/Linux|Ubuntu/Windows/g' example.txt

我在使用 sed 时经常使用的一个技巧是,如果我的搜索或替换字符串包含正斜杠,则切换到不同的分隔符。例如,当我处理文件路径时,我喜欢使用@符号作为分隔符:

sed 's@老路径@新路径@g' file.txt


这使得命令更易于阅读,并避免了对许多转义字符的需求。

使用 awk 命令进行文本替换

像 sed 一样,awk也执行从简单到高级的文本操作。我经常使用 awk 来处理结构化数据,特别是对于 CSV 文件,可能需要对选定的字段进行计算

尽管 awk 以管理结构化数据而闻名,但它对于快速查找和替换任务也很有效。例如,要在文件中替换特定文本,您可以使用:

awk '{gsub(/Windows/, "Linux"); print}' file.txt > new_file.txt


在这里,gsub函数执行全局替换操作,将文件每一行中出现的‘Windows’都替换成‘Linux’。由于 awk 不会直接修改文件,我们将输出重定向到 new_file.txt 以捕获更改。

我还使用 awk 来清理数据导出,尤其是来自电子表格的数据,因为其中额外的格式可能会让数据处理变得复杂。

您可以使用此命令从 CSV 文件的第一列中删除所有双引号:

awk -F, '{gsub(/"/, "", $1); print}' data.csv > cleaned_data.csv

在这里,gsub仅从第一列中删除每个双引号,并且输出被重定向到 cleaned_data.csv 以供进一步使用。

使用 Vim Ex 模式替换文本

想要在不打开完整编辑器的情况下进行快速文本转换?试试Vim(Vi 改进版),这是一个带有 Ex 模式的文本编辑器,允许您直接从命令行执行查找和替换操作。

首先,使用 Vim 打开您的文件:

vim filename.txt

然后,通过按 Esc 键进入 Ex 模式,然后使用(:)键。这将在终端底部提示您一个冒号(:),表示您处于 Ex 模式。要查找和替换文本,请使用此命令:

:%s/macOS/Linux/g


此命令会把整个文件里所有出现的‘macOS’都替换成‘Linux’。%符号表明该命令要应用于整个文件,末尾的 g 标志能保证每行中的所有出现都被替换掉,而不只是第一个。

若要仅替换每行中的首次出现,只需省去g标志:

:%s/macOS/Linux/

需要在特定的行范围内替换文本吗?那就指定行范围。比如,要替换从第 3 行到第 10 行的文本:

:3,10s/macOS/Linux/g

我在进行文件更改时有一个习惯,就是确认每次替换。这种办法能让人进行仔细的逐行编辑。

要是想为每次替换获取提示,就在命令末尾加上c

:%s/macOS/Linux/gc

使用 Bash 脚本

有时,您可能得在多个文件或目录里执行一系列查找和替换操作。对于这种情况,用 Bash 脚本 能够自动完成那些手动操作起来会花费很长时间的任务。

让我们考虑一个简单的脚本,它在当前目录中的多个文本文件中将旧字符串替换为新字符串:

#!/bin/bash

for file in *.txt; do

sed -i 's/Windows/Linux/g'"$file"

done


要用这个脚本,首先把它保存到一个文件里(比如说,bashexample.sh),然后 让这个文件可执行,通过运行:

chmod +x bashexample.sh

然后,使用以下命令执行脚本:

https://www.163.com/dy/article/bashexample.sh

这个 for 循环会遍历 当前目录中的所有文本文件,并使用 sed 在每个文件中替换文本。您还可以根据需要对这个脚本进行修改,以处理不同的模式或文件类型。

使用 Python 脚本替换文本

凭借 Python 的 高级文本处理功能,您可以直接从终端对文件执行查找和替换任务。当您需要更复杂的操作(例如使用条件逻辑处理多个文件)时,Python 脚本很有用。

首先,创建一个新的 Python 文件。您可以使用任何文本编辑器,例如 nano 或 Vim:

vim textfile.py

接下来,将以下 Python 脚本添加到文件中:

#!/usr/bin/env python

import sys

withopen(sys.argv[1], 'r+') as f:

content = f.read().replace('Windows', 'Linux')

f.seek(0)

f.write(content)

f.截断()

保存文件后,通过运行以下命令使其可执行:

chmod +xhttps://www.163.com/dy/article/testfile.py

然后,通过将目标文件作为命令行参数运行脚本来运行:

python3https://www.163.com/dy/article/testfile.py input.txt

此脚本读取 input.txt 的内容,将旧文本的出现替换为新文本,并将更改直接保存到文件中。

Replace Set of Characters With tr Command

您是否曾经需要在整个文件中仅将单个字符替换为另一个字符?如果是,那么您需要尝试 tr 命令。此命令特别适合进行简单的字符替换或删除操作。

例如,我经常使用它将文本文件中的特定字符转换为大写或小写。若要在文本文件中将所有小写的 a 和 d 替换为大写的 A 和 D ,请运行:

tr 'a,d' 'A,D' < example.txt


请记住,tr 处理的是字符,而非字符串或单词,所以它最适用于简单的字符替换,而非更复杂的模式。

您还可以通过运行此命令清理空格或标准化行尾:

cat messy_file.txt | tr ' ' ' ' > clean_file.txt

此 把 Windows 样式的行尾 ( ) 转换为 Unix 样式的行尾 ( ) ,这在处理跨不同操作系统的文件时非常有帮助。

Using perl

Perl,一种高级编程语言,也可以直接在终端中用于查找和替换文本,使其成为 sed 的绝佳替代品。它的语法类似于 sed 的语法,但它提供了更高级的功能。

就个人而言,我真的很喜欢 Perl,因为它特别强大的正则表达式功能,这使其成为复杂的查找和替换操作的绝佳选择

您能够运用此命令在文件里替换任意单词:

perl -pi -e 's/Linux/Windows/g' file.txt

在此,-pi标志告知 perl 直接在原地编辑文件,而-e标志准许您直接传递表达式。

此命令通过在整个文件中将‘Linux’替换成‘Windows’从而对 file.txt 进行修改。

对于简单的替换操作,诸如 sed、awk 或者 perl 这类的命令行工具效果甚佳。

倘若您需要在多个文件中进行更复杂的替换或者具备附加逻辑,那么请选用 Bash 或者 Python 脚本。

到此这篇批处理读取txt内容(批处理读取文本内容)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 删除文件批处理命令模板(批处理删除文件名)2026-03-05 12:45:07
  • 批处理命令怎么使用(批处理命令在哪个菜单中)2026-03-05 12:45:07
  • 批量修改文件名称 批处理(批量修改文件名错误有什么方法改吗)2026-03-05 12:45:07
  • 批处理删除文件名相同字符(批量删除文件名相同的字)2026-03-05 12:45:07
  • 批处理文件批量重命名(如何批量处理文件重命名)2026-03-05 12:45:07
  • 批处理批量重命名文件(批处理批量重命名文件名)2026-03-05 12:45:07
  • 批处理命令(批处理命令是什么)2026-03-05 12:45:07
  • 批处理删除文件(批处理删除文件名相同字符)2026-03-05 12:45:07
  • 删除文件批处理命令(批量删除文件的命令)2026-03-05 12:45:07
  • 批处理删除文件夹里所有东西(批处理删除文件名)2026-03-05 12:45:07
  • 全屏图片