linux - sed 文本替换与文件分隔符

标签 linux sed

我的文件有多个这样的列

A   B   C (jan)   D   E   F (feb)   G (mar)   H

(即 A 和 B、B 和 C、(jan) 和 D 之间有制表符,但 C 和 (jan) 之间有一个空格。我只想用下划线替换这些空格。

因此,输出将类似于

A   B   C_(jan)   D   E   F_(feb)   G_(mar)   H

有什么意见吗?

最佳答案

只需删除括号(用空格替换以保持位置完整)

$ sed 's/[()]/ /g' file
A       B       C  jan  D       E       F  feb  G  mar  H

同时删除内容

$ sed -E 's/\([^)]+\)//g' file
A       B       C       D       E       F       G       H

不清楚你问什么。

仍然不清楚你想要什么,你说你想删除括号,但示例显示了它们。

这里还有两个变体

$ sed -E 's/ (\([^)]+\))/_\1/g' file
A       B       C_(jan) D       E       F_(feb) G_(mar) H

$ sed -E 's/ \(([^)]+)\)/_\1/g' file
A       B       C_jan   D       E       F_feb   G_mar   H

关于linux - sed 文本替换与文件分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53822914/

相关文章:

linux - 简单的脚本不起作用

linux - 删除非数值 - Unix

包含反引号的 Linux 管道数据

regex - 使用纯 sed 对列进行复杂转置

linux - 从标准输入读取大量数据

linux - 使用单个命令通过 ssh 找不到命令,在连接到终端后找到

linux - 在Linux服务器上设置git

Bash:使用 sed 取消注释 XML 标记

mysql - 如何将mysql语句转换为为值添加特定数字

linux - linux下如何解压文件夹?