我有这个脚本,我正在获取目录名称的第一个字母,并且我不想获取以相同字母开头的目录名称并写入文本文件。 for 循环是循环 .txt 文件中的目录名称列表。
for dirName in `cat $1 | tr ' ' '_' | awk '/ova/ && !/Nova/' `
do
firstLetter=$(echo $dirName | head -c 1)
mkdir "/opt/SOS/$dirName"
awk '{ print length(), $0 | "sort -n" }' $1 | cut -f 2- -d ' ' | awk -v var="$firstLetter" '$1 ~ /^ *var/' >> "/opt/SOS/$dirName/seznam-obci-stejne-pismeno.txt"
我正在使用 谢谢你的帮助Linux version 4.19.0-13-amd64 ([email protected]) (gcc version 8.3.0 (Debian 8.3.0-6)) #1 SMP Debian 4.19.160-2 (2020-11-28)
答案1
awk内部/.../
不插入变量——它是文字文本。
选择以下一项:
awk -v letter="$firstLetter" '$1 ~ "^" letter'
awk -v letter="$firstLetter" 'index($1, letter) == 1'
awk -v letter="$firstLetter" 'substr($1, 1, 1) == letter'
请注意,由于默认的字段分隔符,awk 中的字段永远不会以空格开头。