C-shell:从行到列打印结果
Posted
技术标签:
【中文标题】C-shell:从行到列打印结果【英文标题】:C-shell: print result from row to column 【发布时间】:2021-07-12 22:21:20 【问题描述】:我有输出:
1 rpt 4 qor 5 are 6 oip
我希望它变成:
1 rpt
4 qor
5 are
6 oip
这是我的代码:
set d = `sort "04.txt" | uniq -c`
echo $d
【问题讨论】:
请恢复您最近在问题中所做的更改。这与您的基本问题完全不同。您应该为新问题打开新帖子,请将其恢复为原始问题。那么这里给出的其他答案没有意义,谢谢。 我已经把你的问题改成了原来的问题,有新问题请开新帖,谢谢。 Again - 不要编写 csh 脚本。如果这是一个 bourne shell,那么您的问题就是您从echo
参数中删除了标准引号(请参阅 mywiki.wooledge.org/Quotes)。用csh,idk,不值得探索。
@DongDao: GNU awk 可能是一个很好的工具。你需要花几个小时来阅读gawk
的文档;另见sort(1) 和uniq(1) 以及GNU bash 的文档。另请阅读Advanced Linux Programming
请发布一个关于您正在尝试做的事情(而不是您尝试如何做)的新问题,从原始输入而不是您之前某个阶段的输出开始'已经实现并以您想要的最终输出结束,然后我们可以帮助您做任何正确的事情(绝对不会是 csh 脚本!)。
【参考方案1】:
使用您展示的示例,请尝试以下操作。
xargs -n 2 < Input_file
来自man xargs
:
-n max-args, --max-args=max-args 每个命令行最多使用 max-args 参数。如果大小,将使用少于 max-args 的参数 (请参阅 -s 选项)超出,除非给出 -x 选项,在 xargs 将退出哪种情况。
【讨论】:
请详细帮助我。我没有 Input_file @DONGDAO,我也从 xargs 的手册页中添加了详细信息。 OP 的输入几乎可以肯定已经在不同的行上,他们只是没有引用 arg 来回显,因此 shell 正在删除换行符,因此他们认为他们的输入都在 1 行。【参考方案2】:akshay@sys:~$ cat file
1 rpt 4 qor 5 are 6 oip
akshay@sys:~$ sed 's/ /\n/2; P; D' file
1 rpt
4 qor
5 are
6 oip
akshay@sys:~$ awk -v n=2 'for (i=n+1; i<=NF; i+=n) $i = "\n" $i1' file
1 rpt
4 qor
5 are
6 oip
akshay@sys:~$ awk -v RS=" " '$1=$1; ORS=NR%2?FS:"\n" 1' file
1 rpt
4 qor
5 are
6 oip
【讨论】:
请帮我一个新问题 @DONGDAO,请恢复您最近在问题中所做的更改。这与您的基本问题完全不同。您应该为新问题打开新帖子,请将其恢复为原始问题。那么这里给出的其他答案没有意义,谢谢。 OP 的输入几乎可以肯定已经在不同的行上,他们只是没有引用 arg 来回显,因此 shell 正在删除换行符,因此他们认为他们的输入都在 1 行。 @Ed Morton 你是对的,因为 OP 没有详细解释他的要求,我只是给出了给定输入的可能性。以上是关于C-shell:从行到列打印结果的主要内容,如果未能解决你的问题,请参考以下文章