Bash 删除逗号并更改词序

Bash 删除逗号并更改词序,bash,shell,awk,scripting,Bash,Shell,Awk,Scripting,我有一个文本文件,其中每一行都有这种格式(逗号前后的字数可能不同,但至少前后各有一个): 我希望它的内容在终端上显示如下: a few other words some words 我该怎么做?我唯一能想到的是使用tr命令将逗号替换为空格,但我不知道如何更改单词的顺序。 任何帮助都将不胜感激如果您不介意使用awk,可以使用-F选项: $>cat f some words,a few other words foo,bar $>awk -F',' '{print $2,$1}' f

我有一个文本文件,其中每一行都有这种格式(逗号前后的字数可能不同,但至少前后各有一个):

我希望它的内容在终端上显示如下:

a few other words some words
我该怎么做?我唯一能想到的是使用
tr
命令将逗号替换为空格,但我不知道如何更改单词的顺序。
任何帮助都将不胜感激
如果您不介意使用awk,可以使用
-F
选项:

$>cat f
some words,a few other words
foo,bar
$>awk -F',' '{print $2,$1}' f
a few other words some words
bar foo
另一个选项是使用sed:

$>sed 's/\(.*\),\(.*\)/\2 \1/g' f
a few other words some words
bar foo
最后,使用while循环:

$>while IFS=, read part1 part2; do echo "$part2" "$part1";done <f
a few other words some words
bar foo
$>如果为,则阅读第1部分第2部分;执行回显“$part2”“$part1”;done这就是AWK的用途(将字段分隔符定义为逗号时):

编辑:

刚刚注意到@fredtantini有相同的(被接受的)解决方案。我把它留在这里,因为它以更简洁(清晰)的方式显示了解决方案(即,它不使用外部文件)。

shell旨在帮助运行其他程序,而不是处理数据。我会选择另一种语言。我只是尝试了第一种选择,效果非常好,非常感谢!
$>while IFS=, read part1 part2; do echo "$part2" "$part1";done <f
a few other words some words
bar foo
cat yourfile.txt|sed -E 's/(.*),(.*)/\2 \1/'
$ echo "some words,a few other words" | awk -F, '{ print $2,$1 }'
a few other words some words