如何分隔由空格分隔的文本文件中的名称列表

时间:2014-08-13 02:25:30

标签: unix awk grep

需要拆分由空格分隔的文件中的文本。

实施例

Smith,John  Jones,Sarah  Tucker,Sam  Tucker,Sarah 

如何解决这个问题:

Smith,John
Jones,Sarah
Tucker,Sam
Tucker,Sarah

我已经尝试了awk -F' ' { print $0 } filename,但这并没有读到它们之间的空间。谢谢!

3 个答案:

答案 0 :(得分:3)

$ awk -v RS=' ' 'NF' file
Smith,John
Jones,Sarah
Tucker,Sam
Tucker,Sarah

$ awk -v OFS='\n' '{$1=$1}1' file
Smith,John
Jones,Sarah
Tucker,Sam
Tucker,Sarah

答案 1 :(得分:2)

使用awk,您可以迭代由空格分隔的每个字段并打印它们:

$ cat file
Smith,John  Jones,Sarah  Tucker,Sam  Tucker,Sarah

$ awk '{for(i=1;i<=NF;i++) print $i}' file
Smith,John
Jones,Sarah
Tucker,Sam
Tucker,Sarah

答案 2 :(得分:2)

如果字段是制表符分隔的,

tr '\t' '\n' < file

如果它们被一个或多个空格分开,

tr -s ' ' '\n' < file

并非所有tr实现都支持这些C样式的反斜杠转义。请参考当地的手册页以获取替代方案(或者只是简单地传递分隔符 - 在许多shell中, ctrl + v 选项卡会生成一个文字选项卡,换行符可以合法地介于两者之间两个单引号,没有任何转义)。