如何拆分和访问以冒号分隔的字段?

如何拆分和访问以冒号分隔的字段?

这段代码:

foreach line (`cat /etc/group`)
    echo $line
end

返回line包含 4 个由 分隔的字段:

如何拆分字段并访问每个字段的第一个字段line

答案1

foreach line ("`cat /etc/group`")
    set fs = ($line:gas/:/ /)
    set f = ($fs)
    echo "$f[1]"
end

tcsh可以省略中间fs变量,直接set f = ($line:gas/:/ /).

变量修饰符将用(是一个简单的文本,无法识别正则表达式):s/pat/rpl/替换pat变量中出现的每个位置。该标志指示替换所有出现的情况,并且该标志指示在所有单词中执行此操作。rplpatag

如果使用原始文件csh并且/etc/group文件包含 glob 元字符,则必须将循环括在set noglob/unset noglob对中。

答案2

将 awk 与该-F标志一起使用。您必须使用 echo 和管道进入 awk,如下所示:

for line in `cat /etc/group`
do
   col1=$(echo $line | awk -F':' '{print $1}')
   col2=$(echo $line | awk -F':' '{print $2}')

   # Then you can use col1, col2, etc...

   echo "column 1 = $col1"
   echo "column 2 =  $col2"
done

相关内容