我有一个字符串,其中包含多个错误:
element 1 tag1{field1:"text",field2:"text"...},tag2{field1:"text",field2:"text"...},..
element 2 tag1{field1:"text",field2:"text"...},tag2{field1:"text",field2:"text"...},..
我想使用shell提取所有元素的tag1的所有fields1
我的尝试:
sed -n "s/.*\"tag1\":{\"fiel1\":\"\(.*\),\"fiel2\".*/\1/gp"
我只获得最后一个而不是全部。
编辑:问题是整个文本都在一个单独的字符串中,正则表达式只是让我有一个共同发生。由于
答案 0 :(得分:0)
你可以试试这个,
sed 's/\(.*tag1{field1:"\)\([^"]*\)\(".*\)/\2/g' yourfile
答案 1 :(得分:0)
perl -pe 's/tag1\{field1:\"([^\"]*)".*/$1/g' your_file
或者
awk -F":|," '{print $2}'
答案 2 :(得分:0)
sed -n 's/.*[[:space:]]\{1,\}tag1{field1:"\([^"]*\)".*/\1/gp' YourFile
基于文本示例
element 1 tag1{field1:"text",field2:"text"...},tag2{field1:"text",field2:"text"...},..
element 2 tag1{field1:"text",field2:"text"...},tag2{field1:"text",field2:"text"...},..
答案 3 :(得分:0)
使用awk
awk -F\" '{print $2}'
或确保仅针对具有field1
awk -F\" '/field1/ {print $2}'