如何删除哈希文件中文件路径的第一部分?

时间:2019-01-11 06:32:58

标签: bash shell command-line-interface

我有一个哈希文件example.md5,其中充满了类似于以下内容的哈希和文件名。

e5dbb7657f770fad038220f5c69d806c  backup/example/test.txt

我如何批量编辑该文件,使其看起来像这样。

e5dbb7657f770fad038220f5c69d806c  example/test.txt

我只想删除哈希文件中提到的每个文件路径的第一部分。

编辑:文件路径中包含一些数字,即e5dbb7657f770fad038220f5c69d806c 750g/example/test.txt

2 个答案:

答案 0 :(得分:2)

您可以在sed下面使用

[root@967dd7743677 test]# sed 's:[a-z]*/::' hashfile
e5dbb7657f770fad038220f5c69d806c  example/test.txt
[root@967dd7743677 test]#

答案 1 :(得分:1)

使用 GNU sed

sed -E -n 's/([a-z0-9]+)( *)[A-Za-z0-9]+\/(.*)/\1\2\3/p' file_name

输出:

e5dbb7657f770fad038220f5c69d806c  example/test.txt

说明:

-E : --regexp-extended(using extended regular expressions)

-n : --quiet, --silent, suppress automatic printing of pattern space

([a-z0-9]+) : Capturing first group containing the hash characters which includes a combination of one or more small alphabets and numbers

( *) : capturing second group containing whitespaces

[A-Za-z0-9]+\ : matching the first part of second column which may be a combination of one or more small alphabets,numbers and capital letters and a \


(.*) : cpaturing the third group containing any character.

\1\2\3 : backreferencing the first,second and third captured groups.

/p : to print