我在unix脚本中有以下行:
head -1 $line | cut -c22-29 >> $file
我想在没有换行符的情况下附加此输出,而是用逗号分隔。有没有办法将此命令的输出提供给printf?我试过了:
head -1 $line | cut -c22-29 | printf "%s, " >> $file
我也尝试过:
printf "%s, " head -1 $line | cut -c22-29 >> $file
这些都没有奏效。有人有什么想法吗?
答案 0 :(得分:11)
你只想在你的情况下使用
tr '\n' ','
将用逗号
替换所有换行符('\ n')head -1 $line | cut -c22-29 | tr '\n' ',' >> $file
答案 1 :(得分:0)
一个非常老的话题,但是即使是现在,我仍然需要(在有限的命令资源上)执行此操作,并且由于其长度过长,一个(已答复)命令对我来说没有用。
也可以通过使用文件描述符来添加到文件:
touch file.txt
(创建新的空白文件)
exec 100<> file.txt
(ID为100的新fd),
echo -n test >&100
(回测新的fd)
exec 100>&-
(关闭新的fd)
例如,可以通过从特定点读取文件来完成从特殊字符开始的追加。
exec 100 <> file.txt
-新的描述符
read -n 4 < &100
-读取4个字符
echo -n test > &100
-将回声测试附加到从第四个字符开始的文件。
exec 100>&-
-(关闭新的fd)