我有以下元素列表:
a, b, c, 1337, d, e
Run Code Online (Sandbox Code Playgroud)
我希望我有:
e, d, 1337, c, b, a
Run Code Online (Sandbox Code Playgroud)
我怎样才能在bash中实现这一目标?
你可以这样做awk:
#!/bin/bash
awk 'BEGIN{FS=",[ ]*"; OFS=", "}
{
for (i=NF; i>0; i--) {
printf "%s", $i;
if (i>1) {
printf "%s", OFS;
}
}
printf "\n"
}'
Run Code Online (Sandbox Code Playgroud)
脚本说明:
FS=",[ ]*";:字段分隔符(输入的分隔符)的正则表达式匹配逗号后跟零个或多个空格,因此您的输入可以是以下任何一项:
a, b, c, 1337, d, e a,b,c,1337,d,ea, (many spaces) b, c,1337,d, eOFS=", ":输出字段分隔符(输出的分隔符)将明确是一个逗号后跟一个空格(因此输出看起来一致)for (i=NF; i>0; i--) { ... }:NF表示当前行中的字段数。这里我们向后迭代,从最后一个字段打印到第一个字段。if (i>1) { ... }:OFS如果它不是输出中的最后一个字段,则仅打印printf "\n": 新队。示例用法:
$ ./script_name < input_file > output_file
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4458 次 |
| 最近记录: |