unix - 使用 awk 或 sed 从文件中删除连续的重复单词
问题描述
我的输入文件如下所示:
“true true, rohith Rohith;
cold burn, and fact and fact good good?”
输出应如下所示:
"true, rohith Rohith;
cold burn, and fact and fact good?"
我正在尝试使用 awk,但无法获得所需的结果。
awk '{for (i=1;i<=NF;i++) if (!a[$i]++) printf("%s ",$i,FS)}{printf("\n")}' input.txt
有人可以在这里帮助我吗。
问候, 罗希特
解决方案
使用 GNU awk 将第 4 个 arg 用于 split():
$ cat tst.awk
{
n = split($0,words,/[^[:alpha:]]+/,seps)
prev = ""
for (i=1; i<=n; i++) {
word = words[i]
if (word != prev) {
printf "%s%s", seps[i-1], word
}
prev = word
}
print ""
}
$ awk -f tst.awk file
“true, rohith Rohith;
cold burn, and fact and fact good?”
推荐阅读
- linux - “C 编译器无法创建可执行文件”配置 gcc 时出错
- c - 如何在 C 中一次读取 20 行?
- javascript - 如何过滤仅由用户购买的数组
- c# - Logging solution for Apps published to Microsoft Store
- c# - Remove individual pictures by size
- java - Create empty proxy bean from interface
- javascript - How do i move through the values of keys in javascript?
- java - Managing an ArrayList with GUI
- matlab - How to reduce computational time in DDE simulation on Matlab
- java - 删除 JTextPane 行并保持样式