Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在连续行中查找两个字符串,并在shell中以表格形式相应地写入0或1_Bash_Shell_Awk_Sed - Fatal编程技术网

Bash 如何在连续行中查找两个字符串,并在shell中以表格形式相应地写入0或1

Bash 如何在连续行中查找两个字符串,并在shell中以表格形式相应地写入0或1,bash,shell,awk,sed,Bash,Shell,Awk,Sed,给定一个文件list.txt: 1.inside list.txt 2.Started task: running_temp 3.Finished task: running_temp 4.Started task: walking_temp 5.Finished task: walking_temp 6.Started task: sleeping 我想要一个输出文件,其中必须检查每个开始都应该有一个结束。如果没有完成,则必须报告错误。awk救援 awk -F: '/^Started/ {

给定一个文件list.txt

1.inside list.txt
2.Started task: running_temp
3.Finished task: running_temp
4.Started task: walking_temp
5.Finished task: walking_temp
6.Started task: sleeping

我想要一个输出文件,其中必须检查每个开始都应该有一个结束。如果没有完成,则必须报告错误。

awk
救援

awk -F: '/^Started/  {a[$2]++} 
         /^Finished/ {a[$2]--} 
         END         {for(k in a) print a[k],k}' file


0  walking_temp
1  sleeping
0  running_temp

如果您在没有“开始”的情况下“完成”了,您也会得到-1。如果一个
开始的
本身之后没有
完成的
,那么我假设您需要0,否则1

1.inside list.txt
2.Started task: running_temp
3.Finished task: running_temp
4.Started task: walking_temp
5.Finished task: walking_temp
6.Started task: sleeping
7.Anything ...
文件

1.inside list.txt
2.Started task: running_temp
3.Finished task: running_temp
4.Started task: walking_temp
5.Finished task: walking_temp
6.Started task: sleeping
7.Anything ...
请注意,
6.Started
没有
Finished

perl -nle '$m && print ( /Finished/ ? "$` : 1" : "$` : 0" ); $m = /Started/' file
3. : 1
5. : 1
6. : 0


6.Started
本身之后没有
Finished

预期的输出是什么样子的?你能澄清你的问题吗?