我试图在双引号(sampleField="sampleValue")之间打印所有数据,但是很难获得awk和/或sub/ gsub返回双引号之间的所有数据实例.然后,我想在所找到的相应行上打印所有实例以将数据保持在一起.
以下是该input.txt文件的示例:
deviceId="1300", deviceName="router 13", deviceLocation="Corp"
deviceId="2000", deviceName="router 20", deviceLocation="DC1"
Run Code Online (Sandbox Code Playgroud)
我正在寻找的输出是:
"1300", "router 13", "Corp"
"2000", "router 20", "DC1"
Run Code Online (Sandbox Code Playgroud)
我在使用gsub删除a ,和之间的所有数据时遇到问题=.每次我尝试不同的方法时,它总是只返回第一个字段并移动到下一行.
更新:
我忘了提到我不知道每行有多少双引号封装字段.它可以是1,3或5,000.不确定这是否会影响解决方案,但希望确保它在那里.
一个sed解决方案:
sed -r 's/[^\"]*([\"][^\"]*[\"][,]?)[^\"]*/\1 /g'
<<< 'deviceId="1300", deviceName="router 13", deviceLocation="Corp"'
Run Code Online (Sandbox Code Playgroud)
输出:
"1300", "router 13", "Corp"
Run Code Online (Sandbox Code Playgroud)
或者对于文件:
sed -r 's/[^\"]*([\"][^\"]*[\"][,]?)[^\"]*/\1 /g' input.txt
Run Code Online (Sandbox Code Playgroud)