我知道在普通的终端(terminal) 我输入 head -10 test.txt > output
但我要是在一个文件里 写上这个就不管用了。
另外 如果用 echo `head -10 test.txt` 》output 本来是10行的东西, 重定向之后就变成1行,我想保持原貌该怎么办。不胜感激。
文件里面 shell 命令怎么把结果原本的重定向到另外一个文件里?
答案:2 悬赏:0
解决时间 2021-04-09 06:00
- 提问者网友:熱戀丶瘋
- 2021-04-08 13:59
最佳答案
- 二级知识专家网友:恕我颓废
- 2021-04-08 14:45
问题1:
在脚本里和在终端运行的你那个命令的效果是一样的;不生效的原因很可能是你运行脚本的环境变量不同,解决方法①把脚本放到和test.txt一个文件夹下运行;②脚本中test.txt和output使用绝对路径。
问题2:
要输出10行,那么直接head -10 test.txt >> output就可以了呗,为什么要echo一下?
如果你非要echo,那么你要把空格替换为换行
echo `head -10 text.txt` | sed 's/ /\n/g' >> output
但是为什么要多此一举呢?
在脚本里和在终端运行的你那个命令的效果是一样的;不生效的原因很可能是你运行脚本的环境变量不同,解决方法①把脚本放到和test.txt一个文件夹下运行;②脚本中test.txt和output使用绝对路径。
问题2:
要输出10行,那么直接head -10 test.txt >> output就可以了呗,为什么要echo一下?
如果你非要echo,那么你要把空格替换为换行
echo `head -10 text.txt` | sed 's/ /\n/g' >> output
但是为什么要多此一举呢?
全部回答
- 1楼网友:而你却相形见绌
- 2021-04-08 14:53
你可以试试popen 这个函数去实现下:
#include
#include
int main(void)
{
char tmp_buf[1024+1];
file *fp;
memset(tmp_buf, 0, sizeof tmp_buf);
fp = popen("ls -l", "r");
if(fp != null)
fgets(tmp_buf, sizeof(tmp_buf), fp);
printf("out:[%s]\n", tmp_buf);
pclose(fp);
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯