如何删除线的一部分?

如何删除线的一部分?

我需要删除一组文件中的部分行。

示例行:

TRN*1*301444/05-13-20*6549873211~

我需要它是这样的(删除部分/05-13-20):

TRN*1*301444*6549873211~

需要删除直到最后一个星号的正斜杠,并且需要在文件中保留新行。

答案1

sed

sed -n 's_/[^*]*__p'
  • /[^*]*/匹配uto next的部分*,然后将其替换为 null,因为我们在替换中使用了空字符串

例子:

% sed -n 's_/[^*]*__p' <<<'TRN*1*301444/05-13-20*6549873211~'
TRN*1*301444*6549873211~

答案2

可以使用正则表达式来做到这一点。它们有大多数语言版本,但是珀尔是个正则表达式领导者。有很多方法可以用正则表达式完成您所要求的操作,但这里有一个例子;

perl -pi -e 's/\/.*\*/*/g' file.txt

相关内容