我有一个文本文件,其中每一行都有这种格式(逗号之前和之后的单词数可能会有所不同,但它至少有一个之前和之后一个):
some words,a few other words
我希望它的内容能像这样显示在终端上:
a few other words some words
我该怎么做?我唯一能想到的是使用tr
命令用空格替换逗号,但我不知道如何更改单词的顺序。
任何帮助,将不胜感激。
答案 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有相同的(接受的)解决方案。我把它留在这里,因为它以更简洁(清晰)的方式显示解决方案(即,它没有使用外部文件)。