Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        2年前关闭。
                                                                                            
                
        
我想使用shell将标记有模式的file1中的多行插入到file2中。
模式是10个数字,输入示例始终不同:“ 2016854218”

file1示例(输入):

[...]
    <a class="none" data-container="#fr_5854841" href="https://example.com/profiles/2016854218"></a>
    <div class="new_cl">
        <img src="2016854218_medium.jpg">
    </div>
    <div class="blocker">Novaa<br>
        <span class="friend_small_text">
[...]


file2示例(输出):

2016854218
2016859711
2017076181

最佳答案

编辑:由于OP也希望具有http链接的完整值,直到所有数字现在也添加此解决方案为止。

awk --re-interval 'match($0,/https:.*[0-9]{10}/){print substr($0,RSTART,RLENGTH)}' Input_file




如果可以,请先输入cat -v Input_file,然后在输入文件中控制M个字符,如果可以,请先运行dos2unix实用程序。如果您没有它,请使用:

tr -d '\r' < Input_file > temp_file && mv temp_file Input_file


但以上将删除所有的控制M字符,因此要删除该行最后一行的控制M(以防万一),请使用:

awk '{sub(/\r$/,"")}1' Input_file > temp_file && mv temp_file Input_file


现在,一旦控件M不在Input_file上,则可以使用以下命令:

awk --re-interval 'match($0,/[0-9]{10}/){print substr($0,RSTART,RLENGTH)}' Input_file > Output_file


如果您有较新版本的GNU --re-interval,则可以删除awk

10-08 09:17