一、题目描述
给定一个文件 file.txt,转置它的内容。你可以假设每行列数相同,并且每个字段由 ' ' 分隔。
示例: 假设 file.txt 文件内容如下:
name agealice 21ryan 30
应当输出:
name alice ryanage 21 30
二、解题思路
文件内容为3行2列,每行列数相同,字段由 ' ' 分隔。需要将第一列转为第一行,第二列转为第二行。
xargs 多行变单行:很容易就想到了 xargs 这个命令,可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

输出和结果有差异,接下来想办法依次取到每一列然后执行 xargs 输出。如何取到第一列的数据呢?
awk + print 打印列:可以使用 awk 命令处理文本,配置 print 命令来获取指定列的数据:
微软文字转语音
微软文本转语音,支持选择多种语音风格,可调节语速。
0 查看详情
awk '{print $1}' test

这样就达到了我们的要求,接下来只需要获取文本有多少列,然后循环输出即可。
head + wc 获取列数:通过 head -n 命令可以获取文件指定行数的内容,再使用 wc -w 即可获取当前行的所有列数。由于本题每行列数相同,因此我们取第一行即可。

获取每行的总列数为2列。接下来再写个循环来输出。

三、代码
# 从文件 file.txt 读取并将转置后的内容打印到标准输出。columns=$(cat file.txt | head -n 1 | wc -w)for i in $(seq 1 $columns)do awk '{print $'''$i'''}' file.txt | xargsdone
以上就是Leetcode No.194 转置文件(xargs)的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/465947.html
微信扫一扫
支付宝扫一扫