我需要搜索以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
答案 0 :(得分:3)
使用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
答案 1 :(得分:1)
在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
答案 2 :(得分:1)
与sed
;
sed -e 's/999\+$//' data.txt