Chinaunix

标题: 求助 awk问题 [打印本页]

作者: papokaka    时间: 2009-04-15 10:05
标题: 求助 awk问题
文档a
---------------------------------------------------
1 test " tes"t test test "test

123test
test"
2 test test "vtest" testtest "test
567test
t321est

90909test

test"
3 test test
4 test "test
test"
5 test
----------------------------------------------------
请问如何删掉最后一列的中以"开头,直到下面发现"为止的所有内容,包括回车换行
希望的结果是

1 test " tes"t test test
2 test test "vtest" testtest
3 test test
4 test
5 test

[ 本帖最后由 papokaka 于 2009-4-15 10:28 编辑 ]
作者: nhw_cs    时间: 2009-04-15 10:14
grep -E '^[1-9] ' a|sed -e 's/\".*$//g'
作者: ly5066113    时间: 2009-04-15 10:16
标题: 回复 #1 papokaka 的帖子
awk '$NF~/"/{NF--}/^[0-9]/' urfile
作者: papokaka    时间: 2009-04-15 10:27
请不要以数字做判断好吗,因为""中间可能会出现数字
作者: ly5066113    时间: 2009-04-15 10:41
标题: 回复 #4 papokaka 的帖子
awk '!k{if($NF~/"/){NF--;k=1}print;next}/"/{k=0}' urfile
作者: blackold    时间: 2009-04-15 10:51
sed:
  1. sed ':n;/ [^ ]*"[^ ]*$/{:m;N;s/"[^"]*\n[^"]*"//;tn;bm}' urfile
复制代码

作者: justlooks    时间: 2009-04-15 10:56
awk '$NF!~/"[a-z]+/{print}$NF~/"[a-z]+/{NF--;print;getline;while(!match($0,/"$/)){getline;};next}'

[ 本帖最后由 justlooks 于 2009-4-15 11:00 编辑 ]
作者: blackold    时间: 2009-04-15 10:57
awk:
  1. awk '1' RS=' [^ \n]*"[^" \n]* *\n[^"]*"' ORS="" urfile
复制代码


LZ的要求没有这么严格:
  1. awk '1' RS=' "[^ \n]* *\n[^"]*"' ORS="" urfile
复制代码

[ 本帖最后由 blackold 于 2009-4-15 11:13 编辑 ]
作者: youshuang    时间: 2009-04-15 11:02
都很牛,学习了
作者: ywlscpl    时间: 2009-04-15 11:12
[root@Mylinux tmp]# awk '$NF~/^"/&&!T{T=1;$NF="";print;next}T&&$0~/"/{T=0;next}!T' file            
1 test " tes"t test test
2 test test "vtest" testtest
3 test test
4 test
5 test
作者: youshuang    时间: 2009-04-15 11:15
标题: 回复 #8 blackold 的帖子
请问黑哥定义RS的那一堆字符串是啥意思,能挨个解释下马
作者: waker    时间: 2009-04-15 11:26
标题: 回复 #11 youshuang 的帖子
就是匹配
"test

123test
test"
作者: waker    时间: 2009-04-15 11:27
第一个"前面还有个空格




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2