【发布时间】:2016-10-22 21:33:30
【问题描述】:
我已经尝试解决一个问题好几个小时了,但没有找到解决方案。我正在尝试重新格式化已被错误解析的文本文件。该文件格式包含一个名称列表,从姓氏在前,并且在其中一行中有一个麻烦的唯一名字,如下所示:
Mussen, Steven
Fletcher, Bob
Monday, Mario
Glitch, Christopher
Fletcher, Bob
Ram, Dale
Ram,
Dale
Mussen, Steven
Von Hemie, Donnie
Gallape, Patrick
Desormore, J.
Sun, Dallas
Sun, Dallas
我尝试通过以下方式将文件转储到 bash 数组中:
declare -a GAMERS=($(cat Gamers.txt))"
然后运行一个for循环:
for i in "${GAMERS[@]}";do echo $i >>NewGamers.txt; done;
每行一个单词。然后我尝试使用 awk 将每两行合并为一行:
awk 'NR%2{printf $0" ";next;}1' NewGamers.txt
问题是 Donnie Von Hemie 先生的名字中有三个字符串,这使我的 awk 解决方案毫无用处。最终目标是简单地解决错误的格式,在这种情况下,我试图将唯一的 Dale 向上移动一行。最终输出应该是:
Mussen, Steven
Fletcher, Bob
Monday, Mario
Glitch, Christopher
Fletcher, Bob
Ram, Dale
Ram, Dale
Mussen, Steven
Von Hemie, Donnie
Gallape, Patrick
Desormore, J.
Sun, Dallas
Sun, Dallas
任何想法都将不胜感激......
【问题讨论】:
标签: arrays linux bash if-statement awk