删除逗号并更改单词顺序

时间:2017-04-30 16:05:47

标签: bash shell awk scripting

我有一个文本文件,其中每一行都有这种格式(逗号之前和之后的单词数可能会有所不同,但它至少有一个之前和之后一个):

some words,a few other words

我希望它的内容能像这样显示在终端上:

a few other words some words

我该怎么做?我唯一能想到的是使用tr命令用空格替换逗号,但我不知道如何更改单词的顺序。 任何帮助,将不胜感激。

3 个答案:

答案 0 :(得分:1)

如果您不介意使用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 :(得分:1)

cat yourfile.txt|sed -E 's/(.*),(.*)/\2 \1/'

答案 2 :(得分:0)

这就是AWK的用途(将字段分隔符定义为逗号时):

$ echo "some words,a few other words" | awk -F, '{ print $2,$1 }'
a few other words some words

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