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

时间:2018-02-28 15:37:20

标签: shell unix

我的文件包含以下数据 文件名: - 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-*

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

  

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

Ouput Line after remove or replace

年/月/日

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

3 个答案:

答案 0 :(得分:0)

只需使用** sed**

sed 's@.*-ext-[^/]*/@@' file

答案 1 :(得分:0)

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

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

希望这会对你有所帮助。

答案 2 :(得分:0)

如果您想在第二次斜杠后保留所有内容,请使用

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