regex - 删除linux中第二个重复指定字符前的数据

标签 regex linux shell sed

我有一个包含以下数据的文本文件:

AB-NJCFNJNVNE-802ac94f09314ee
AB-KJNCFVCNNJNWEJJ-e89ae688336716bb
AB-POJKKVCMMMMMJHHGG-9ae6b707a18eb1d03b83c3
AB-QWERTU-55c3375fb1ee8bcd8c491e24b2

我需要删除第二个连字符 (-) 之前的数据并生成另一个具有以下输出的文本文件:

802ac94f09314ee
e89ae688336716bb
9ae6b707a18eb1d03b83c3
55c3375fb1ee8bcd8c491e24b2

我是 linux 的新手,尝试 sed 命令在过去的几个小时里都没有成功。如何使用 sed 或任何其他有用的命令(如 awk)获得所需的输出?

最佳答案

您可以使用一个简单的cut 调用:

$ cat myfile.txt | cut -d"-" -f3- > myoutput.txt

编辑:
根据评论中的要求进行一些解释: cut 根据给定的分隔符将文本字符串分解为字段。
-d 定义分隔符,在本例中为 -
-f 定义输出哪些字段。在这种情况下,我们要消除第二个连字符之前的所有内容,或者换句话说,返回第三个字段及以后的字段 (3-)。

命令的其余部分只是通过管道输出。 cat将文件放入cut,然后将结果保存到输出文件。

关于regex - 删除linux中第二个重复指定字符前的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29817285/

相关文章:

linux命令连接多个文件,内容由文件名分隔?

linux - shell脚本: Contact list

Ruby:检查连通性

python TypeError 格式字符串的参数不足

java - 在 Java 中删除标点符号前的空格

regex - "diff"工具的正则表达式风格似乎缺乏?

shell - 将 shell 文件转换为 Windows 批处理文件

python - 如何使用正则表达式搜索字符串中的 2-9 位数字?

linux cpio复制目录结构和文件名?

linux - 为什么FHS有usr目录