-1

我搜索并发现“echo -n”和“printf”是解决这个问题的方法,但它们在我的机器上工作有点古怪。

这里:

[wadhwaso@nxnixd01 ~]$ echo "hello" >> test
[wadhwaso@nxnixd01 ~]$ cat test
hello
[wadhwaso@nxnixd01 ~]$ echo -n "world" >> test
[wadhwaso@nxnixd01 ~]$ cat test
hello
world
[wadhwaso@nxnixd01 ~]$ echo -n " seriously?" >> test
[wadhwaso@nxnixd01 ~]$ cat test
hello
world seriously?

“printf”也是如此。它第 2 次第 3 次第 4 次等,但不是第一次。

我对 awk 和 sed 不太满意,这就是我想使用它们的原因。

如果我别无选择,有人可以告诉我如何通过 awk 或 sed 在 /etc/grub.conf 中添加“elevator=noop”吗?

答: sed -i '$s/$/,string/' file..

4

3 回答 3

1

-n选项控制是否在回显末尾添加换行符。首先echo "hello"写入hello\n文件;这就是换行符的来源。

要添加内核选项,请尝试其中之一。他们每个人都在 grub.conf 中搜索该kernel行并将“电梯=noop”附加到末尾。

sed '/kernel/ s/$/ elevator=noop/' /etc/grub.conf

awk '$1 == "kernel" { $0 = $0 " elevator=noop" } { print } ' /etc/grub.conf
于 2012-10-24T19:24:14.963 回答
0

通常你的 shell 会有一个内置的回声。这可能会引起相当大的混乱。如果您看到奇怪的行为,您应该尝试回显的绝对路径,它可能会解决问题。

[user@host ]$ which echo
/usr/bin/echo
[user@host ]$ echo --version
--version
[user@host]$ /usr/bin/echo --version
echo (GNU coreutils) 8.15
...

事实证明,我的回声,x64 linux 上的 8.15 和 bash 4.2.37 似乎“做正确的事”:

[user@host ]$ echo -n "Hi" > /tmp/hi
[user@host ]$ cat /tmp/hi
Hi[user@host ]$
于 2012-10-24T21:15:30.910 回答
0

使用 printf 而不是 echo。echo 不便携且使用不便

于 2012-10-24T23:49:04.373 回答