【问题标题】:C-shell: print result from row to columnC-shell:从行到列打印结果
【发布时间】: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 脚本!)。

标签: shell awk scripting 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" $i}1'  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 没有详细解释他的要求,我只是给出了给定输入的可能性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 2023-04-03
  • 1970-01-01
  • 2022-12-10
  • 1970-01-01
  • 2016-03-08
相关资源
最近更新 更多