我在名为columns的文件中包含以下内容:
SCHEMA_123 | user | id
SCHEMA_123 | user | name
SCHEMA_123 | user | role
我运行以下内容并获得我在stdout中寻找的内容:
cat columns | sed 's/ //g' | sed 's/|/./g'
输出:
SCHEMA_123.user.id
SCHEMA_123.user.name
SCHEMA_123.user.role
我尝试将输出重定向到具有相同文件名(列)的文件,但文件最终为空。这是我正在使用的:
cat columns | sed 's/ //g' | sed 's/|/./g' > columns
如果我使用不同的文件名,我会得到我想要的输出。我无法读取文件,修改文件并将其写回相同的文件名吗?
答案 0 :(得分:1)
您无法读取和写入同一文件,因为即使在执行命令行之前,shell也会将输出文件截断为零字节。
使用sed
中的内嵌修改选项:
sed -i.bak 's/ //g; s/|/./g' columns