我想写一个小脚本来解析 C 文件的所有注释使用 shell 脚本,但我什至没有得到正确的读取 o/p,我正在得到文件 o/p 与其他垃圾数据混合。
>/.1432804547.3007 /.1432804567.3007 /.1432804587.3007 /.1432804608.4021 /.1432804628.4021 /.1432804648.4021 /.1432804668.4021 /.1432804688.4021 /bin >/boot /dev /etc /home /lib /lib64 /lost+found /media /misc /mnt /net /opt /proc >/root /sbin /selinux /srv /sys /tmp /usr /var
>parsed_comments.tmp parse_func.sh file_update_time - update mtime and ctime time
>parsed_comments.tmp parse_func.sh @file: file accessed
>parsed_comments.tmp parse_func.sh
>parsed_comments.tmp parse_func.sh Update the mtime and ctime members of an inode and mark the inode
>parsed_comments.tmp parse_func.sh for writeback. Note that this function is meant exclusively for
>parsed_comments.tmp parse_func.sh usage in the file write path of filesystems, and filesystems may
>parsed_comments.tmp parse_func.sh choose to explicitly ignore update via this function with the
>parsed_comments.tmp parse_func.sh S_NOCMTIME inode flag, e.g. for network filesystem where these
>parsed_comments.tmp parse_func.sh timestamps are handled by the server.
>*/
>void file_update_time(struct file *file)
这就是我正在做的事情..
parse_comments() {
local filename="$1"
while read line; do
echo $line | grep "*"
done < "$filename"
parse_comments "/root/rpmbuild/linux-2.6.32-431.17.1.el6.x86_64/fs/inode.c"
我已经尝试了所有解决方案(例如 - 同时读取 -r,同时读取 -u 3 等)在 SO 上告诉,而读取问题没有一个解决方案对我有用。我不知道使用 while 循环阅读有什么问题,请帮忙...如果我对相同的工作使用"awk",它可以正常工作。但是"awk"不符合我的目的。
问题在 shellcheck.net 上得到解决。这是修改后的代码...
parse_comments() {
local filename="$1"
while read -r line; do
echo "$line" | fgrep -e "*"
done < "$filename"
}
parse_comments "/root/rpmbuild/linux-2.6.32-431.17.1.el6.x86_64/fs/inode.c"