хотите прочитать файл построчно, а затем хотите обрезать строку по разделителю - PullRequest
1 голос
/ 12 января 2011
cat $INPUT_FILE| while read LINE
do
abc=cut -d ',' -f 4 $LINE

Ответы [ 4 ]

2 голосов
/ 12 января 2011

Perl:

cat $INPUT_FILE | perl -ne '{my @fields = split /,/; print $fields[3];}'
1 голос
/ 12 января 2011

Ключ заключается в использовании подстановки команд, если вы хотите, чтобы вывод команды был сохранен в переменной.

Оболочка POSIX (sh):

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

Если выиспользуя устаревшую оболочку Bourne, используйте backticks вместо предпочтительных $():

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

В некоторых оболочках вам может не понадобиться внешняя утилита.

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"
0 голосов
/ 15 января 2011

Прямой 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);
0 голосов
/ 12 января 2011

Bash:

while read line ; do
    cut -d, -f4 <<<"$line"
done < $INPUT_FILE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...