当前位置:首页 » 操作系统 » linuxshellawkif

linuxshellawkif

发布时间: 2022-08-02 22:47:29

linux下Shell使用if语句判断是否有test用户存在,如存在,显示该用户的UID,不存在则显示"no such user"

#!/bin/sh
su - test
if [ $? -eq 1 ]
then
echo "no such user"
else
echo `cat /etc/passwd|grep test|awk -F: '{print $3}'`
fi
应该不需要解释吧!!!!

㈡ 在linux shell中用awk如何实现这个问题:

你这个题目很有意思,你看我脚本对么:
awk -F "[,]" 'BEGIN{b="";}{
if (a[$1$4]) {
split(a[$1$4],value,",");
if( $2 <= value[2]) {
a[$1$4]=value[1]","$3;
b=$1","a[$1$4]","$4;
} else {
b=$1","a[$1$4]","$4;
printf("%s\n",b);
a[$1$4]=$2","$3;
b=$1","a[$1$4]","$4;
};
}else {
printf("%s\n",b);
a[$1$4]=$2","$3;
b=$1","$2","$3","$4;
};
}END{printf("%s\n",b);}' test.txt

㈢ shell中awk中if判断

你直接运行grep '2018-06' gprs_c* | grep $num |more 看下是不是有输出?

如果提示

Usage: grep [OPTION]... PATTERN [FILE]...

Try 'grep --help' for more information.

就是num没有赋值

然后看下awk那里,我这里举了个例子,可以试试下里面例子中的引号

$catgprs_c
2018-06-02;447956815999;2018-06-0200:00:00
2018-06-03;447956815999;2018-06-0300:00:00
2018-06-04;447956815999;2018-06-0400:00:00
$grep'2018-06'gprs_c*|grep'447956815999'|awk-F";"'{if($3<"2018-06-0300:00:00")print$1}'
2018-06-02
$date1="2018-06-0300:00:00"
$grep'2018-06'gprs_c*|grep'447956815999'|awk-F";"'{if($3<"'"$date1"'")print$1}'
2018-06-02

㈣ linux shell脚本为什么不能执行if命令

autoreboot.sh: line 9: [0=1]: command not found
----
f [$LOAD_VULE=1]
这里错了,要改成
f [ $LOAD_VULE -eq 1 ]

特别强调下,"["后面有空格,“]”前面有空格。

㈤ Linux的shell,sed或awk之类工具替换函数

can't really understand

something like this?

nc10@your-5554c55be4 ~
$ cat bb
#! /bin/bash

while read -r;
do
if [[ "$REPLY" =~ (int my_function)( .*) ]]
then
REPLY=${BASH_REMATCH[1]}"_bk"${BASH_REMATCH[2]}
else
REPLY=$REPLY
fi
printf "%s\n" "$REPLY"
done < test.c >> urfile

nc10@your-5554c55be4 ~
$ rm urfile
rm:是否删除 普通文件 “urfile”? y

nc10@your-5554c55be4 ~
$ sh bb

nc10@your-5554c55be4 ~
$ cat urfile
int my_function_bk (int i)
{
if(i>0){
printf("TRUE\n");
retrun 0;
}else{
printf("FALSE\n");
retrun 1;
}
}

nc10@your-5554c55be4 ~
$

㈥ 菜鸟提问:linux shell awk

# echo "12 0 7 35 24 103 0 389 287 0" | awk '{split($0,tA," ");for(k in tA){if(tA[k]%2!=0){printf("%d ",tA[k]);}};printf("\n");for(k in tA){if(tA[k]%2==0){printf("%d ",tA[k]);}};printf("\n");for(k in tA){if(tA[k]==0){printf("%d ",tA[k]);}};printf("\n")}'

结果:
7 35 103 389 287
0 12 0 24 0
0 0 0

㈦ 急!两道linux shell awk编程题请教!

1 第一题 data.tmp是文件名
awk -F'&&' '{a[$1]+=$2}END{for(i in a)print i,a[i]}' data.tmp

2 先去吃早点 等等在作

awk -F'|' 'NR==FNR{a[$1]=$2}NR>FNR{if($1 in a)print $0,a[$1]}' f1 f2
这样就可以了, 但是只限于这个特例, 如果第一列会有重复出现, 就有bug了。 或者在第二个文件的第一列中的数值在第一个文件中没有出现过,也会有bug

㈧ Linux shell awk怎么去除行内,重复列

awk-F"[-,]"'{for(i=1;i<=NF;i++)a[$i,NR]++}{for(jina){split(j,b,SUBSEP);if(b[2]==NR)printfb[1]""}printf"
"}'关键词.txt>去除重复后.txt

以此例测试通过。


关于awk二维数组的使用:

awk的多维数组在本质上是一维数组,更确切一点,awk在存储上并不支持多维数组。awk提供了逻辑上模拟二维数组的访问方式。例如,array[2,4] = 1这样的访问是允许的。awk使用一个特殊的字符串SUBSEP (34)作为分割字段,在上面的例子中,关联数组array存储的键值实际上是2344。
类似一维数组的成员测试,多维数组可以使用if ( (i,j) in array)这样的语法,但是下标必须放置在圆括号中。
类似一维数组的循环访问,多维数组使用for ( item in array )这样的语法遍历数组。与一维数组不同的是,多维数组必须使用split()函数来访问单独的下标分量。split ( item, subscr, SUBSEP)。

㈨ Shell awk命令嵌套if...elif... else写法

awk '
{
if ($1==1)
print "A"
else if ($1==2)
print "B"
else
print "C"
}'
#命名为1.sh

执行方法:echo "1" | sh 1.sh

写成一行:
echo "3" | awk '{if ($1==1) print "A"; else if ($1==2) print "B"; else print "C"}'

热点内容
设置js缓存时间 发布:2025-01-18 04:43:44 浏览:511
360路由怎么改密码 发布:2025-01-18 04:43:08 浏览:408
飞智手柄安卓手机如何 发布:2025-01-18 04:39:53 浏览:700
安卓手机收藏的东西在哪里找 发布:2025-01-18 04:16:19 浏览:8
安卓手机网络无法使用怎么办 发布:2025-01-18 04:12:55 浏览:364
摩斯密码的杠是什么 发布:2025-01-18 04:06:52 浏览:808
winsock搜服务器ip 发布:2025-01-18 03:49:32 浏览:394
安卓手机蓝牙默认地址在哪里 发布:2025-01-18 03:47:57 浏览:907
shell脚本文件路径 发布:2025-01-18 03:40:31 浏览:483
sql语句执行错误 发布:2025-01-18 03:21:49 浏览:651