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