如何根据行中的文本分隔文本

如何根据行中的文本分隔文本

我有大约 200 行,想将其分成 20 行。我不知道如何解释。

例如:

test:test | US
testt2:testsdgad | CZ
hksfdg:gsdsd | UK

| UK我想将包含、| US和的行分隔| CZ在不同行上。我的意思是将其转换为以下格式:

test:test | US
test:test | US
test:test | US
test:test | CZ
test:test | CZ
test:test | UK
test:test | UK
test:test | UK

我怎样才能做到这一点?

答案1

你没有说你使用的是什么操作系统。这适用于 Linux,也许也适用于 Windows,如果你有 awk,呆呆地、nawk 或 mawk。

首先生成一个数据文件。您已经有一个了,因此可以跳过此步骤。

for n in {1..66}; do for c in US CZ UK; do echo "test$n:test$n | $c" >> data.in; done; done

然后将其输入到awk(或gawk等)进行排序和打印。

cat data.in | awk -- '{a[$3] = a[$3] $0 "\n"}; END{print a["US"] a["CZ"] a["UK"]}' > data.out

输出如下所示:

...
test65:test65 | US
test66:test66 | US
test1:test1 | CZ
test2:test2 | CZ
...

相关内容