搜索以特定模式结尾的列,然后删除该列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索以特定模式结尾的列,然后删除该列相关的知识,希望对你有一定的参考价值。

我需要搜索以999结尾的任何列的数字行,然后删除整个列,同时保留任何前导数字(即8599999 .... - > 85)

数据线:

66 72 79 84 87 90 91 92 92 93 92 91 89 85999999999999999999999999999999999

期望的输出:

66 72 79 84 87 90 91 92 92 93 92 91 89 85
答案

使用sed

$ s='66 72 79 84 87 90 91 92 92 93 92 91 89 85999999999999999999999999999999999'

$ # POSIX sed
$ echo "$s" | sed 's/999{1,}//g'
66 72 79 84 87 90 91 92 92 93 92 91 89 85

$ # sed with ERE support
$ echo "$s" | sed -E 's/999+//g'
66 72 79 84 87 90 91 92 92 93 92 91 89 85

$ # with GNU sed
$ echo "$s" | sed 's/999+//g'
66 72 79 84 87 90 91 92 92 93 92 91 89 85

这将删除所有出现的99,然后是行中任何位置的一个或多个9

另见:Reference - What does this regex mean?

另一答案

在AWK中:

awk '{gsub(/999+$/,"")}1' test.in

让我们来看看:

$ cat > test.in
1 2 3
4 5 69999999
$ awk '{gsub(/999+$/,"")}1' test.in
1 2 3
4 5 6
另一答案

sed;

sed  -e 's/999+$//' data.txt

以上是关于搜索以特定模式结尾的列,然后删除该列的主要内容,如果未能解决你的问题,请参考以下文章

谷歌中以特定单词结尾的 Python 搜索网站

谷歌日历 Gdata 旧的重复事件已删除事件仍显示 EventID 以 Z 结尾

从遵循特定模式的列中提取字符串

SQL,更新特定行中的列,而不是所有行

删除所有换行符并在特定文本后添加它们

查找名称包含固定列中特定值的列