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

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

本文关键字:linux C++ 使用 分隔 一行 分隔符 gt 空格      更新时间:2023-10-16

我有几行像这样:

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

我想使用c++或linux将其分离为4列。我想要的输出看起来像这样:

4539 | 07235001 | Aach |特里尔Saasburg

所以我想把几个空格当作分隔符,而不是一个。

(空格的随机数总是> 1)

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

Thanks in advance

您应该单独阅读每个字段。最后一个字段可以读到换行符

为止。
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变量用于设置每条记录的字段分隔符,可以包含任意正则表达式。OFS的输出相当于FS变量。