Linux 我在bash代码中使用awk语句时遇到一些困难
我试图检查某些值(DIC、IC、RNDIC)是否在文本文件的第一行,但不在第一列。缝合下面的所有细节。并不是说文本文件中的每个字段都是制表的 file.txtLinux 我在bash代码中使用awk语句时遇到一些困难,linux,bash,shell,awk,scripting,Linux,Bash,Shell,Awk,Scripting,我试图检查某些值(DIC、IC、RNDIC)是否在文本文件的第一行,但不在第一列。缝合下面的所有细节。并不是说文本文件中的每个字段都是制表的 file.txt NO DIC IC RNDIC FI BO CF --- 1 2 3 4 5 6 这是我必须处理此文件的代码: type=$(awk 'NR==1 { for (i = 1; i <= NF; i++) { if (i != 1 &&
NO DIC IC RNDIC FI BO CF
---
1 2 3 4 5 6
这是我必须处理此文件的代码:
type=$(awk 'NR==1 {
for (i = 1; i <= NF; i++)
{
if (i != 1 && ($i == "DIC" || $i == "IC" || $i == "RNDIC"))
print "1"
}
}' $PWD/file.txt)
if [[ $type == "1" ]]; then
# rest of the code is irrelevant
fi
echo $type
type=$(awk'NR==1{
对于(i=1;i您可以在打印1
一次后调用exit
:
type=$(awk 'NR==1 {
for (i = 1; i <= NF; i++) {
if (i != 1 && ($i == "DIC" || $i == "IC" || $i == "RNDIC")) {
print "1"
exit
}
}
}' $PWD/file.txt)
type=$(awk'NR==1{
对于(i=1;i如果您正在使用bash,则无需分叉和依赖awk:
read -ra FIELDS < "$PWD/file.txt"
for A in "${FIELDS[@]:1}"; do
case "$A" in
DIC|IC|RNDIC)
# <do some things>
break
;;
esac
done
read-ra字段<“$PWD/file.txt”
对于“${FIELDS[@]:1}”中的
中的“$A”格
DIC | IC | RNDIC)
#
打破
;;
以撒
完成
或
函数是类型1{
本地字段A
读取-ra字段<“$1”
对于“${FIELDS[@]:1}”中的
中的“$A”格
DIC | IC | RNDIC)
返回0
;;
以撒
完成
返回1
}
如果是_type1“$PWD/file.txt”,则
#
fi
注意:我只是使用了case
,因为我不知道bash的版本,而且extglob
可能会很麻烦
function is_type1 {
local FIELDS A
read -ra FIELDS < "$1"
for A in "${FIELDS[@]:1}"; do
case "$A" in
DIC|IC|RNDIC)
return 0
;;
esac
done
return 1
}
if is_type1 "$PWD/file.txt"; then
# <do some things>
fi