从特定字符开始删除所有文本

问题描述 投票:-1回答:5

我有一个文件设置

TEXT1:TEXT2

基本上由:分隔的文本行

我希望:右边的所有文字都没了,所以TEXT1:TEXT2会变成TEXT1

unix awk sed grep
5个回答
2
投票

Using cut

我们告诉cut我们的字段分隔符是冒号,-d:,我们要选择第一个字段-f1

$ cut -d: -f1 file
TEXT1

Using sed

我们告诉sed删除一行上的第一个冒号以及之后的所有内容:

$ sed 's/:.*//' file
TEXT1

Using grep

我们告诉grep选择每个的第一部分,但不包括第一个冒号:

$ grep -o '^[^:]*' file
TEXT1

2
投票
awk -F: '{$0=$1}1' infile
TEXT1

将“:”设为分隔符,然后将column1设置为记录。


1
投票

下面的脚本

awk -v FS=":" '{print $1}' file

也会给你相同的结果。


0
投票

在AWK中,替换:之后的所有内容:

$ awk 'sub(/:.*/,"",$0)' test
TEXT1

0
投票

使用sed

sed -i.bkp 's/:.*//' infile.txt

这也将更改文件并创建名为infile.txt.bkp的备份文件

使用grep

grep -oP '.*(?=:)' infile.txt
© www.soinside.com 2019 - 2024. All rights reserved.