我用fstream读了一个ascii文件.一行包含至少两个以下patern重复(最多128个):
%d %llu %d %d %llu %d %d %llu
Run Code Online (Sandbox Code Playgroud)
对于每一行,我需要行中每个模式的第三个%d的最大值
我找不到用sscanf正确完成的方法.
myFstreams->getline (buffer, MAX_BUFF-1);
while( ... ){
sscanf (buffer," %*d %*llu %*d %d %*llu %*d %*d %*llu",&number);
if(number>max) max=number;
//modify buffer ???
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
我有很多行(超过50个)xml文件,其中某些行格式错误(每个文件超过30/40个):
例如:
<TAG1>
<TAG_TO_FORMAT>
a_random_string
</TAG_TO_FORMAT>
<AN_OTHER_TAG_TO_FORMAT>
an_other_random_string
</AN_OTHER_TAG_TO_FORMAT>
<OTHER_TAG>pifpafpouf</OTHER_TAG>
</TAG1>
Run Code Online (Sandbox Code Playgroud)
应该变成这样:
<TAG1>
<TAG_TO_FORMAT>a_random_string</TAG_TO_FORMAT>
<AN_OTHER_TAG_TO_FORMAT>an_other_random_string</AN_OTHER_TAG_TO_FORMAT>
<OTHER_TAG>pifpafpouf</OTHER_TAG>
</TAG1>
Run Code Online (Sandbox Code Playgroud)
不管新行</TAG1>是否仍然存在,我的关键问题是每个模式:<TAG>random_string</TAG>必须在一行上(random_string不包含EOL)
我在bash中找不到允许我执行此操作的任何工具,那么我如何在bash中执行此操作?(或者也许在python中,但我更喜欢bash)。