需要删除字符串的第三个冒号后的所有数据

时间:2017-06-07 05:55:33

标签: bash awk sed

我有一个文件说test.txt,内容如下:

apple:orange:mango:123:1234:12345

我希望删除第三次冒号后的所有数据

预期输出

apple:orange:mango:

Kinldy帮助

4 个答案:

答案 0 :(得分:1)

使用反向引用:

sed 's/\([^:]*:[^:]*:[^:]*:\).*/\1/' test.txt

或使用GNU sed:

sed -E 's/(([^:]*:){3}).*/\1/' test.txt

答案 1 :(得分:0)

使用grep:如果需要最后一个冒号。

grep -oP '^.*?:.*?:.*?:' input
apple:orange:mango:

如果不需要最后一次冒号:

grep -oP '^.*?:.*?:[^:]+' input
apple:orange:mango

答案 2 :(得分:0)

您可以使用cut执行此操作,例如cut -d: -f1-3 test.txt。它显示了第一,第二和第三列。如果您需要其他范围的列,只需将-f1-3替换为您需要的内容。

`

答案 3 :(得分:0)

echo apple:orange:mango:123:1234:12345| awk '{gsub(/[0-9]:*/,"")}1'
apple:orange:mango: