如何交替合并文件中的两列?请参见下面的示例。
输入文件:
sam jam
tommy bond
预期输出:
sam
jam
tommy
bond
答案1
简单地与awk
:
awk '{ print $1 ORS $2 }' file
$1
和$2
- 分别是第 1 和第 2 字段ORS
- 输出记录分隔符。的初始值为ORS
字符串“\n
”(即换行符)
输出:
sam
jam
tommy
bond
答案2
一些替代方案:
使用 awk :
$ awk '$1=$1' OFS="\n" file1
sam
jam
tommy
bond
该解决方案适用于每行任意数量的字段:
$ cat file2
one two three
four five
six seven eight nine
$ awk '$1=$1' OFS="\n" file2
one
two
three
four
five
six
seven
eight
nine
OFS
是输出字段分隔符。
$1=$1
强制 awk 使用 OFS“重新计算”每条记录 ($0)
只是为了好玩,下面有一个 sed 替代方案,它也适用于每行任意数量的字段:
$ sed -r 's/[ ]+/\n/g' file2
答案3
对于 ~/z1 上的数据,此命令:
xargs -n1 < ~/z1
产生:
sam
jam
tommy
bond
在这样的系统上:
OS, ker|rel, machine: Linux, 3.16.0-4-amd64, x86_64
Distribution : Debian 8.9 (jessie)
bash GNU bash 4.3.30
xargs (GNU findutils) 4.4.2
和:
OS, ker|rel, machine: SunOS, 5.11, i86pc
Distribution : Solaris 11.3 X86
bash GNU bash 4.1.17
xargs - ( /usr/bin/xargs, 2016-04-10 )
这参数命令从 STDIN 获取标记,一次最多 n 个(本例中为 1),并将标记作为命令的参数提供,默认为回声。
最美好的祝愿...干杯,drl
答案4
echo `paste -s file` | tr ' ' '\n'
或者
paste -s file | fmt -1
或者
cat file | xargs -n1
对于您的特殊情况,无需打扰那些编程命令,例如awk
或sed
。上面的简单命令就足够了。