将每行的第二列移动到新的下一行

时间:2017-01-19 19:47:03

标签: bash shell unix awk sed

我可以通过以下方式将每隔一行移动到上一行的第二列:

1 a
2 b
3 c

但我不能反过来这样做。我所拥有的如下:

1
a
2
b
3
c

我需要

# Manually remove tokenPassport that's being incorrectly added by zeep
from lxml import etree
token_passport = envelope.xpath('//x:tokenPassport',
namespaces {'x':'urn:messages_2016_2.platform.webservices.netsuite.com'})
if token_passport:
token_passport[0].getparent().remove(token_passport[0])

我检查了几个类似的列行移位问题,但无法弄清楚我的情况。谢谢!

3 个答案:

答案 0 :(得分:3)

你可以使用这个带有OFS='\n'的awk命令,在强制awk用$1=$1技巧重写每条记录后,将输出字段分隔符作为换行符:

awk '{$1=$1} 1' OFS='\n' file
1
a
2
b
3
c

您还可以使用grep -o

grep -Eo '\w+' file
1
a
2
b
3
c

答案 1 :(得分:3)

一次只使用xargs一条记录,

xargs -n1 <file
1
a
2
b
3
c

来自man xargs页面

  

-n max-args, - max-args = max-args               每个命令行最多使用max-args参数。如果超出大小(参见-s选项),则将使用少于max-args的参数,除非               给出-x选项,在这种情况下xargs将退出。

答案 2 :(得分:2)

您可以使用tr

cat file | tr ' ' '\n'

sed

sed -r 's/ /\n/g' file

你明白了,

1
a
2
b
3
c