我有一个结构文件
12312
desc: bleh...
9938
desc: blah...
desc: bloh...
desc: blih...
desc: bluh...
9912
desc: blah...
Run Code Online (Sandbox Code Playgroud)
我想移动匹配模式"desc:"的行到前一行或删除行中的'\n',它在每个模式"desc:"之前.
期望的输出:
12312 desc: bleh...
9938 desc: blah... desc: bloh... desc: blih... desc: bluh...
9912 desc: blah...
Run Code Online (Sandbox Code Playgroud)
我试过了
awk '!/desc:/{
printf "%s ",$0
getline
printf "%s \n",$0
}
/desc/{print}' file
Run Code Online (Sandbox Code Playgroud)
没有结果.
实际上所有的数据都是输出,awk -F\" '{print $4 "\t" $6}'
也许我可以先做点什么?
我有几个包含具有唯一子字符串的行的文件NAME-:
<input type="hidden" name="NAME-00B5JZ" value="350.378,00">
<input type="hidden" name="NAME-0599" value="0,00">
<input type="hidden" name="NAME-7012" value="0,00">
<input type="hidden" name="NAME-0096" value="0,00">
<input type="hidden" name="NAME-0433" value="0,00">
<input type="hidden" name="NAME-1100" value="0,00">
Run Code Online (Sandbox Code Playgroud)
name和valuehtml 标签属性总是不同的。
我需要将制表符分隔的值放入单独的文件中,其名称与原始文件相对应。
00B5JZ 350378,00
0599 0,00
0096 0,00
0433 0,00
1100 0,00
Run Code Online (Sandbox Code Playgroud)
应从value的值中删除点
编辑:我决定编辑这篇文章,并为阅读本文的人提供另一种方法:
假设文件是file1.txt , file2.txt,file3.txt当前目录中没有其他内容:
for f in file*txt; do cat ${f} | sed 's/^[[:space:]]*//;s/<input.*name="NAME-//;s/" value="/\t/;s/">//;s/\.//g' > ${f//\.txt/_out\.txt}; done
Run Code Online (Sandbox Code Playgroud)
cat将它们一一传递给sedname删除的值以内的所有内容name's …