这段代码:
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
变量中出现的每个位置。该标志指示替换所有出现的情况,并且该标志指示在所有单词中执行此操作。rpl
pat
a
g
如果使用原始文件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