作者godfield (咖啡猫)
看板Linux
标题Re: bash 3 的一个 script, for i in ...
时间Wed Aug 13 11:25:22 2008
以一般的情况而言, 通常会用 sed 或者其他的 scripting language 来处理类似问题,
例如以下的方法都可以:
sed 's/$/ abc def !no/' /path/filename1 > /path/filename2
awk '{print $0 "abc def"}' /path/filename1 > /path/filename2
perl -ne 's/$/ abc def !no/;print' /path/filename1 > /path/filename2
那麽如果坚持只用纯粹的 bash script, 完全不用内建命令以外的东西,
当作练习题来写也是不错的题目.
IFS=$(echo -en "\n ")
IFS=${IFS:0:1}
for i in $(< /path/filename1); do
echo "$i"' abc def !no'
done > /path/filename2
unset IFS
如果不限定用原文提问者的架构, 其实也有更简单明了的方法,
同样只用 bash 内建命令:
while read i; do
echo "$i"' abc def !no';
done < /path/filename1 > /path/filename2
※ 引述《"老学不会生" <[email protected]>, 看板: Linux》之铭言:
: 请教一下 ...
: (话说我是外行...)
: 想在 bash 3.2.33 下,
: 对某档案 (/path/filename1) 内的每一行的行尾 加空白再加一些字 -- 譬如就是加 "
: abc def !no"
: 然後存成 /path/filename2 档.
: 我是这样 抄 来的:
: #!/bin/bash
: for i in $( /path/filename1 ); do
: echo "$i abc def !no" > /path/filename2
: done
: ##############
: 但是... 奇怪, 这样不行 !?
: 它说:
: ......command not found
: 请教, 不知要怎麽改才对?
: 谢谢罗 ^_^
--
How shall my heart be unsealed unless it is broken?
By Kahlil Gibran
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.8.136