想要逐行读取文件,然后想要在分隔符上剪切线

时间:2011-01-12 14:05:18

标签: perl shell

cat $INPUT_FILE| while read LINE
do
abc=cut -d ',' -f 4 $LINE

4 个答案:

答案 0 :(得分:2)

的Perl:

cat $INPUT_FILE | perl -ne '{my @fields = split /,/; print $fields[3];}'

答案 1 :(得分:1)

关键是如果想要保存在变量中的命令输出,请使用命令替换。

POSIX shell(sh):

while read -r LINE
do
    abc=$(cut -d ',' -f 4 "$LINE")
done < "$INPUT_FILE"

如果您使用的是旧版Bourne shell,请使用反引号代替首选$()

    abc=`cut -d ',' -f 4 "$LINE"`

在某些shell中,您可能不需要使用外部实用程序。

Bash,ksh,zsh:

while read -r LINE
do
    IFS=, read -r f1 f2 f3 abc remainder <<< "$LINE"
done < "$INPUT_FILE"

while read -r LINE
do
    IFS=, read -r -a array <<< "$LINE"
    abc=${array[3]}
done < "$INPUT_FILE"

saveIFS=$IFS
while read -r LINE
do
    IFS=,
    array=($LINE)
    IFS=$saveIFS
    abc=${array[3]}
done < "$INPUT_FILE"

答案 2 :(得分:0)

击:

while read line ; do
    cut -d, -f4 <<<"$line"
done < $INPUT_FILE

答案 3 :(得分:0)

Straight Perl:

open (INPUT_FILE, "<$INPUT_FILE") or die ("Could not open $INPUT_FILE");
while (<INPUT_FILE>) {
    @fields = split(/,/, $_);
    $use_this_field_value = $fields[3];
    # do something with field value here
}
close (INPUT_FILE);