我有4个文本文件,其中包含以下内容:
text1.txt
<a data-role="sku" data-code="1">
...
<a data-role="sku" data-code="2">
text2.txt
<a data-role="sku" data-code="19">
...
<a data-role="sku" data-code="48">
<a data-role="sku" data-code="93">
text3.txt
this file text not have any date-code
text4.txt
<a data-role="sku" data-code="333">
<a data-role="sku" data-code="444">
我如何使用 grep 获得这样的输出
我希望每个文本文件以新行输出,如果文本文件不完全匹配,则将替换为否
1,2
19,48,93
NO
333,444
。
我尝试这个grep -oP '(?<="data-code":")[^"]*' text*
但我得到这样的结果:
1
2
19
48
93
333
444
答案 0 :(得分:0)
请尝试以下操作(如果您对nvtop
感到满意):
awk
输出如下。
awk -F'[",]' '
BEGIN{
OFS=","
}
FNR==1{
if(val){
print val
}
val=""
}
/Code/{
val=(val?val OFS:"")$(NF-2)
}
END{
if(val){
print val
}
}' *.txt
编辑: :由于OP在注释中更改了Input_file的样式,因此请按现在对其进行编辑。
1,2
7,9,14
EDIT2: :根据OP的注释,OP需要为没有找到匹配项的Input_file打印awk -F'"' '
BEGIN{
OFS=","
}
FNR==1{
if(val){
print val
}
val=""
}
/data-code/{
val=(val?val OFS:"")$2
}
END{
if(val){
print val
}
}' *.txt
,然后可能会有所帮助。
NO