所以我有一个文本文件,我想删除其中第一个冒号(包括冒号)的所有内容。例如,如果这是输入
0000007ba9ec6950086ce79a8f3a389db4235830:9515rfsvk
000000da2a12da3fbe01a95bddb8ee183c62b94d:letmein2x
000000edf3179a1cf4c354471a897ab7f420bd52:heychudi:rbhai
000000f636f0d7cbc963a62f3a1bc87c9c985a04:cornetti
0000010a15f5b9315ef8e113f139fa413d1f2eb2:3648067PY128
那么这应该是输出
9515rfsvk
letmein2x
heychudi:rbhai
cornetti
3648067PY128
请注意,第 3 行中的第二个冒号仍保留,仅应删除从每行开头到(包括)第一列的位置。
有没有一种快速的方法可以用 grep 或 awk 来做到这一点?
答案1
和cut
cut -d: -f2- file
-d
-f2-
设置从第二个字段到最后一个字段的分隔符和平均值。
答案2
使用 sed:
sed 's/[^:]*://' input.txt
换句话说:匹配零个或多个非冒号字符的序列,后跟冒号,并将它们替换为空。
答案3
这可以与grep
(PCRE)一起使用:
grep -Po "(?<=:).*" file
输出:
9515rfsvk
letmein2x
heychudi:rbhai
cornetti
3648067PY128
答案4
如果第一个:
始终位于文件中的位置 41,则可以使用:
colrm 1 41 <file
或者
cut -c42- file
这不是最方便的选项,因为您需要首先确定列的位置,但至少它也可以在没有分隔符的情况下工作。