[英]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::find
和std::string::substr
取出子字符串字段。
您可以将awk与正则表达式结合使用:
echo "4539 07235001 Aach Trier Saarburg" | awk 'BEGIN { FS = "[ ]{2,}" } { OFS = "|" }; {$1=$1; print $0 }'
FS
变量用于为每个记录设置字段分隔符,并且可以包含任何正则表达式。 OFS
是FS
变量的输出等效项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.