假设我有一个制表符分隔的数据文件。我想将文件中的每个标签转换为单个空格字符。
$ cat junk
John Doe 35 New York
Bob Smith 24 Boston
Jane Doe 31 Los Angeles
为此,我可以使用expand
命令。如果我这样做:
$ expand -t 1 junk > junk
它会破坏垃圾文件,所有数据都将丢失。当然,最简单的解决方案是将输出重定向到临时文件,然后将输出从临时文件重定向回原始文件。这看起来像这样:
$ expand -t 1 junk > temp
$ cat temp > junk
$ rm temp
$ cat junk
John Doe 35 New York
Bob Smith 24 Boston
Jane Doe 31 Los Angeles
我认为这太麻烦了。也许有一种更简单的方法可以用来一次完成整个事情?
答案 0 :(得分:2)
如果您有GNU sed(问题标记为linux
,可能就是这种情况),您可以使用其-i
或--in-place
选项删除其临时文件(除非您提供备份后缀。)
使用s
(替换)命令将每个选项卡替换为空格; g
(全局)修饰符替换正在处理的行上的所有制表符,即不仅仅是第一个制表符:
sed -i 's/\t/ /g' junk