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:
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:
awk '1' RS=' [^ \n]*"[^" \n]* *\n[^"]*"' ORS="" urfile
复制代码
LZ的要求没有这么严格:
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