使用unix删除/替换文件中的动态String

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用unix删除/替换文件中的动态String相关的知识,希望对你有一定的参考价值。

我有包含下面文件名的数据的文件: - Test.txt

TimeStamp_2017-12-43 09:09:14.0999/-ext-10100/Year/Month/Day
TimeStamp_2000-12-43 07:09:14.0999/-ext-10200/Year/Month/Day
TimeStamp_2015-12-43 06:09:14.0999/-ext-10200/Year/Month/Day
TimeStamp_2010-12-43 05:09:14.0999/-ext-10200/Year/Month/Day
TimeStamp_2011-12-43 04:09:14.0999/-ext-1090/Year/Month/Day
TimeStamp_2018-12-43 03:09:14.0999/-ext-920/Year/Month/Day
TimeStamp_2013-12-43 02:09:14.0999/-ext-1200/Year/Month/Day
TimeStamp_2016-12-43 01:09:14.0999/-ext-02/Year/Month/Day

在这里,我需要在每一行中替换或删除以下格式

TimeStamp_*/-ext-*

**文件中的输入行(Sample TimeStamp值和-text-值每次都在变化)

TimeStamp_2017-12-43 09:09:14.0999 / -ext-10100 /年/月/日

Ouput Line after remove or replace

年月日

任何人都可以帮助解决这个问题

答案

只需使用** sed**

sed 's@.*-ext-[^/]*/@@' file
另一答案

使用下面的sed命令,它将适合你。它将如何运作?首先,它将找到模式TimeStamp_.*-ext-.*(在这里你需要添加点.*通知sed命令你使用*作为外卡字符)并替换为空行和第二个表达式/^s*$/d将搜索空行并删除它和最后,您将获得所需的输出。在;命令中,每个表达式都用sed分隔。

sed -e 's/TimeStamp_.*-ext-.*//;/^s*$/d' Test.txt > tmp.txt
mv tmp.txt Test.txt

希望这会帮助你。

另一答案

如果要在第二个斜杠后保留所有内容,请使用

cut -d"/" -f3- Test.txt

以上是关于使用unix删除/替换文件中的动态String的主要内容,如果未能解决你的问题,请参考以下文章

在Unix中打印/替换ALT代码

如何在Unix下使用sed命令

使用 VBScripts 将文本文件 unix 行结尾替换为 Windows [重复]

在 CSV UNIX 中删除双引号之间的 \n

unix下KSH中shell的SED命令怎样把文件中的NULL替换成空格。 (十六进制码00替换成20)

DOS和UNIX文本文件之间相互转换的方法&批量