繁体   English   中英

使用C ++或linux使用多个空格(> 1)作为分隔符将行分隔为列

[英]Separate a line to columns using several spaces (>1) as a delimiter using C++ or linux

我有几行看起来像这样:

4539(空格数)07235001(空格数)Aach(空格数)Trier Saarburg

我想使用C ++或linux将其分为4列。 我想要的输出将如下所示:

4539 | 07235001 | Aach |特里尔萨斯堡

因此,我想将多个空格视为分隔符,而不是单个空格。

(幸运的是,随机数始终> 1)

行并不总是由4列组成,空间问题也不总是在最后一列。

提前致谢

您应该分别阅读每个字段。 可以读取最后一个字段,直到换行

character is received:  
std::string column1;
std::string column2;
std::string column3;
std::string column4;
while (input_file >> column1)
{
  input_file >> column2;
  input_file >> column3;
  getline(input_file, column4);
}

另一种方法是使用getline读取整行,然后使用std::string::findstd::string::substr取出子字符串字段。

您可以将awk与正则表达式结合使用:

echo "4539     07235001      Aach    Trier Saarburg" | awk 'BEGIN { FS = "[ ]{2,}"  } { OFS = "|" };  {$1=$1; print $0 }' 

FS变量用于为每个记录设置字段分隔符,并且可以包含任何正则表达式。 OFSFS变量的输出等效项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM