Shell 我想从文件中的每一行删除一个字符串

Shell 我想从文件中的每一行删除一个字符串,shell,Shell,我有一个文件,它的内容是 /a/b/c /a/b/d/xyz /a/b/c/nmxnxlcs ... 我想从文件中删除字符串/a/b/。 我想使用shell脚本执行此操作。使用sed: sed 's#/a/b/##' file 如果要更新该文件 sed -i.bak 's#/a/b/##' file 它将创建一个备份文件.bak,并用新值更新文件 同样,您可能只想替换以/a/b/开头的行。在这种情况下,您可以使用: sed 's#^/a/b/##' file 其中,^表示行的开头 试验

我有一个文件,它的内容是

/a/b/c
/a/b/d/xyz
/a/b/c/nmxnxlcs
...
我想从文件中删除字符串
/a/b/
。 我想使用shell脚本执行此操作。

使用
sed

sed 's#/a/b/##' file
如果要更新该文件

sed -i.bak 's#/a/b/##' file
它将创建一个备份
文件.bak
,并用新值更新
文件

同样,您可能只想替换以
/a/b/
开头的行。在这种情况下,您可以使用:

sed 's#^/a/b/##' file
其中,
^
表示行的开头

试验
虽然在问题语句中没有提到,但该示例建议您仅在字符串位于行首时删除该字符串:

sed 's:^/a/b/::' myfile.txt
这将改变:

/a/b/c/foo.txt
/a/b/c/x/a/b/foo.txt
致:

并将改变:

/a/b/c/foo.txt
/a/b/c/x/a/b/foo.txt
致:

而非:

c/xfoo.txt

sed
应该可以很好地解决这个问题。从您的示例来看,字符串是否只出现在行的开头?如果行是“/a/b/c/a/b/foo”@user2882240由于您是新来的,请记住,如果您的问题已经解决,您可以标记一个接受的答案。您可以点击答案旁边的复选标记,将答案从空心切换为绿色。看看你是否有任何疑问!
c/xfoo.txt