【发布时间】:2018-12-30 11:51:56
【问题描述】:
我有一个像这样的管道分隔文本文件
TEST|F123433|F123433|TEST
TEST|F123434|F123434|TEST
TEST|F123435|F123435|TEST
TEST|F123436|F123436|TEST
TEST|F123437|F123437|TEST
我正在尝试从第 2 列和第 3 列中删除前导“F”。这是预期的输出。
TEST|123433|123433|TEST
TEST|123434|123434|TEST
TEST|123435|123435|TEST
TEST|123436|123436|TEST
TEST|123437|123437|TEST
我尝试使用下面的 sed 来执行此操作,但它仅从第 2 列而不是第 3 列中删除了“F”
sed 's/^TEST|F/TEST|/g'
【问题讨论】:
-
想出一个更具代表性的例子,可以测试一个潜在的解决方案,看看它是否有效。
sed 's/F//g'会根据您发布的输入生成您发布的输出,因此它可能不是一个好的测试用例,因为根据您的要求,它不能用于区分工作和非工作解决方案。 -
您只需要使用反斜杠转义
|。它是正则表达式中的特殊字符。 -
@miken32 实际上在(旧版)
sed中是相反的;反斜杠会将管道变成元字符。