在Linux终端中使用'tr'和'awk'命令从文本文件中删除标点符号

7

我正在进行一门关于Linux终端基础的速成课程,其中一个任务是使用'awk'和'tr'命令替换文本文件中的标点符号。我已经尝试搜索解决方案,但是没有任何有效的结果,有人能帮忙吗?


1
请在您的问题中添加示例输入和所需输出的样本输入。 - Cyrus
1
Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎不属于编程或开发范畴。请参阅帮助中心中的我可以在这里问什么样的问题。也许超级用户Unix&Linux Stack Exchange更适合提问。 - jww
3
快速提示是 tr -d '[:punct:]',但是你的问题非常模糊:用什么来替换呢? - glenn jackman
2个回答

10

使用tr(正如Glenn Jackman已经指出的那样):

cat TEXTFILE | tr -d '[:punct:]' > OUTFILE

使用 awk(在 gawkmawk 上测试通过):

cat TEXTFILE | awk '{ gsub(/[[:punct:]]/, "", $0) } 1;' > OUTFILE

你也可以在AWK中省略cat:

awk '{ gsub(/[[:punct:]]/, "", $0) } 1;' TEXTFILE > OUTFILE

注意:TEXTFILE和OUTFILE必须不同。


1
请注意,您永远不能将 OUTFILE 设置为等于 TEXTFILE。请参考 Bash Pitfalls 13 - kvantour
@kvantour,是的,我想即使使用cat也不能保证在awk想要写入之前cat会完成读取。谢谢。 - Andriy Makukha

0

tr --help,-d选项表示删除 tr -d [:punct:] < inputfile > outputfile


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接