11 12
发新话题
打印

如何让 read 不自动去掉开头的空格?

如何让 read 不自动去掉开头的空格?

用 read 实现了一个简单的 nl, 结果不 work
引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[26096 0]
; cat cat.sh
#!/bin/bash

file=$1
if [ ! -f "$file" ]; then
    exit 1
fi

lineno=0
while read -r line; do
    printf "%6u  %s\n" $((++lineno)) "$line"
done < "$file"
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[26096 0]
; ./cat.sh cat.sh
     1  #!/bin/bash
     2
     3  file=$1
     4  if [ ! -f "$file" ]; then
     5  exit 1
     6  fi
     7
     8  lineno=0
     9  while read -r line; do
    10  printf "%6u  %s\n" $((++lineno)) "$line"
    11  done < "$file"
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[26096 0]
; o
[ 本帖最后由 dearvoid 于 2008-6-27 14:39 编辑 ]      
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

关注一下

要不用别的办法。。。      
面包会有的 女人也会有的
_______________________

TOP

还有什么好的方法能一行一行的遍历一个文件呢? 最好不要 perl       
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

awk一向是你擅长的呀
awk '{print NR,$0}' xxx

以前曾有同事使用awk强行编编辑xorg.conf。。。      
面包会有的 女人也会有的
_______________________

TOP

俺是想找一个比较 common 的方法, 可以依次将文件的各行赋值到一个 var 中, 然后再做其它处理      
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

done < "$file" 是什么意思?      
前进、前进、再前进

TOP

引用:
原帖由 TUDOU01 于 2007-8-18 19:35 发表
done < "$file" 是什么意思?

< "$file" 是基本的输入重定向,为整个 while ... do 循环提供输入      
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

sed -n "$line p"  file 这种恶心方法...      
面包会有的 女人也会有的
_______________________

TOP

引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[21645 0]
; cat cat.sh
#!/bin/bash

file=$1
if [ ! -f "$file" ]; then
    exit 1
fi

saveIFS="$IFS"
IFS=$'\n'
lineno=0
while read -r line; do
    printf "%6u  %s\n" $((++lineno)) "$line"
done < "$file"
IFS="$saveIFS"
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[21645 0]
; ./cat.sh cat.sh
     1  #!/bin/bash
     2
     3  file=$1
     4  if [ ! -f "$file" ]; then
     5      exit 1
     6  fi
     7
     8  saveIFS="$IFS"
     9  IFS=$'\n'
    10  lineno=0
    11  while read -r line; do
    12      printf "%6u  %s\n" $((++lineno)) "$line"
    13  done < "$file"
    14  IFS="$saveIFS"
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[21645 0]
; bye
[ 本帖最后由 dearvoid 于 2008-6-27 14:40 编辑 ]      
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间

TOP

IFS=$'\n'
不明白这个值是什么      
面包会有的 女人也会有的
_______________________

TOP

 11 12
发新话题