如何解决使用awk连接连续的行
我如何使用awk将连续的行合并为一行?实际上,我的awk命令具有此功能:
awk -F "\"*;\"*" '{if (NR!=1) {print $2}}' file.csv
我删除第一行
44895436200043
38401951900014
72204547300054
38929771400013
32116464200027
50744963500014
我想要这个:
44895436200043 38401951900014 72204547300054 38929771400013 32116464200027 50744963500014
csv文件
解决方法
这是tr
的工作:
# tail -n +2 prints the whole file from line 2 on
# tr '\n' ' ' translates newlines to spaces
tail -n +2 file | tr '\n' ' '
使用awk,您可以通过将输出记录分隔符更改为" "
来实现此目的:
# BEGIN{ORS= " "} sets the internal output record separator to a single space
# NR!=1 adds a condition to the default action (print)
awk 'BEGIN{ORS=" "} NR!=1' file
,
我假设您要修改现有的awk,以便它打印出水平分隔的列表,而不是单词,每行一个。
您可以在命令中替换print $2
操作,可以执行以下操作:
awk -F "\"*;\"*" 'NR!=1{u=u s $2; s=" "} END {print u}' file.csv
或替换ORS(输出记录分隔符)
awk -F "\"*;\"*" -v ORS=" " 'NR!=1{print $2}' file.csv
或将管道输出到xargs
:
awk -F "\"*;\"*" 'NR!=1{print $2}' file.csv | xargs
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。