Linux Shell学习
shell语言使用及学习
时钟树上的小猴子
这个作者很懒,什么都没留下…
展开
-
Linux Shell——用awk计算相邻两行相减
【代码】Linux Shell——用awk计算相邻两行相减。原创 2024-07-22 14:42:35 · 344 阅读 · 0 评论 -
Linux shell——grep使用注意事项
如果是匹配的字符串中有特殊字符,需要加上\去转义,否则匹配不准确,比如下面的例子如果我直接用。原创 2023-03-21 21:54:59 · 1046 阅读 · 0 评论 -
Linux shell——grep命令输出匹配字符串的前后n个字符
【代码】Linux shell——grep命令输出匹配字符串的前后n个字符。转载 2022-12-30 14:32:32 · 4307 阅读 · 0 评论 -
Linux Shell——输出匹配内容的前后几行
有文件test.log内容如下:aaabbbcccddd使用grep的-B选项,显示匹配内容及其前2行。grep "ccc" test.log -B 2输出结果为:aaabbbccc原创 2022-02-15 15:40:58 · 3127 阅读 · 0 评论 -
Linux shell——字符串
字符串拼接circuit='abc'cat $circuit".v" > $circuit"_new.v" #变量与字符串拼接,可用于参数化设计#等于下面的命令cat abc.v > abc_new.v原创 2021-10-21 16:36:27 · 164 阅读 · 0 评论 -
Linux shell——循环控制
文章目录让循环间隔不为1跳出循环让循环间隔不为1addnum=2recnum=10for (( i=0;i<$recnum;i=$i+$addnum))doecho $idone跳出循环使用:break n,n表示要跳出的循环层数,默认情况下 n=1,代表只跳出当前循环。$ cat test.sh#!/bin/basha=1while [ $a -le 5 ]do echo "Outer loop:a=$a" a=$[$a+1] for val in 1原创 2021-10-21 16:34:14 · 218 阅读 · 0 评论 -
Linux shell——矩阵转置
转载自: https://blog.csdn.net/weixin_34358092/article/details/91706401awk '{for(i=1;i<=NF;i++){a[FNR,i]=$i}}END{for(i=1;i<=NF;i++){for(j=1;j<=FNR;j++){printf a[j,i]" "}print ""}}' filename转载 2021-10-21 16:32:31 · 896 阅读 · 0 评论 -
Linux shell——注意事项
使用shell脚本需要注意的地方1.脚本中同时包含shell命令与matlab脚本时,执行脚本需要用source命令,而不是sh,如下面的例子。source proc.sh #能够执行脚本中的matlab程序sh proc.sh #不能够执行脚本中的matlab程序2.比较变量是否等于1个值时,可以用下面的命令:if [ $dd -eq 1 ]thenmatlab -nodesktop -nosplash -nojvm -r "proc;quit;"elselast=`expr $dd原创 2021-10-21 16:25:30 · 188 阅读 · 0 评论 -
Linux shell——筛选某一列小于某个变量的行
假如有文件a.txt,我们需要筛选其中第7列小于100的行,可以使用下面的命令:num=100awk '{if($7<=100') print $0}' a.txt>b.txt如果筛选条件变为变量表示,则可以用下面的命令:num=100awk '{if($7<='$threshnum') print $0}' a.txt>b.txt...原创 2021-03-30 15:56:26 · 5184 阅读 · 0 评论 -
Linux shell——计算程序运行时间
基本思路:分别在程序开始运行和运行结束时打印系统时间,保存在time.txt中。echo "starttime: `date +"%Y-%m-%d %H:%M:%S"`" > time.txtxxxxxx #主程序echo "endtime: `date +"%Y-%m-%d %H:%M:%S"`" >> time.txt对开始和结束时间求差值,得到程序运行时间:###runtime.shstart=`awk '{print $2,$3}' time.txt | se原创 2021-03-15 17:25:57 · 3938 阅读 · 0 评论 -
Linux shell——在文本的行尾或行首添加字符
sed 's/$/&,/g' a.txt > b.txt #在每一行后面加上逗号参考:用sed命令在文本的行尾或行首添加字符原创 2020-12-09 10:43:52 · 4937 阅读 · 0 评论 -
Linux shell——打印文件中除了第一列的内容
代码如下:awk '{$1="";print}' a.txt > b.txt原创 2020-12-03 17:04:13 · 509 阅读 · 0 评论 -
Linux shell——检查数组中是否包含某个元素
代码如下:echo "${inputs[@]}" | grep "\<$str\>" > str.txt #匹配数组inputs中包含变量$str的元素,输出到str.txtif [ -s str.txt ];then ## 通过str.txt是否为空来判断数组中是否包含匹配的元素echo 'YES!'elseecho 'NO!'fi...原创 2020-12-03 17:01:35 · 5273 阅读 · 1 评论 -
Linux shell——将两个文件的内容按列合并
有a.txt,内容如下:g18g27g109g741g742有b.txt,内容如下:13899000现要将a.txt与b.txt内容按列合并,方法一:使用数组node=($(awk '{print $1}' a.txt))value=($(awk '{print $1}' b.txt))num=${#node[@]}echo $numcat /dev/null > scoap.txtfor((i=0;i<$num;i++));doecho $iech原创 2020-12-02 17:32:28 · 2725 阅读 · 2 评论 -
Linux shell——多行注释
使用<<COMMENT和COMMENT命令。<<COMMENTecho 'hello'echo 'world'COMMENTecho 'hello world!'运行结果为:[li@localhost classify]$ <<COMMENT> echo 'hello'> echo 'world'> COMMENT[li@localhost classify]$ echo 'hello world!'hello world!原创 2020-12-02 15:45:18 · 643 阅读 · 0 评论 -
Linux shell——将两个文件的内容按行交叉合并
有文件a.txt,内容为:abc有文件b.txt,内容为:123现需要将a.txt和b.txt合并为c.txt,内容为:a1b2c3使用下面的脚本,其中$line是要交叉合并的文件行数。for ((i=1;i<=$line;i++));docat a.txt | tail -n +$i |head -n 1 >>c.txt #提取a.txt的第i行,追加到c.txtcat b.txt | tail -n +$i |head -n 1 >&g原创 2020-12-02 15:06:59 · 2080 阅读 · 0 评论 -
Linux shell——打印不为0的行
有如下两个文件,现在需要将a.txt中非零的行提取出来,然后打印b.txt中对应行号的内容。使用的代码如下:count=($(awk '{print $1}' a.txt)) #将count.txt的内容保存为数组num=${#count[@]} #数组大小echo $num nonzero=0for((i=0;i<$num;i++));doif [ ${count[$i]} != 0 ];then #判断该行是否为0值line原创 2020-11-05 13:29:55 · 879 阅读 · 0 评论 -
Linux shell——打印某一列非空的行
问题描述:有如下图格式的文件,其中内容是AND门,每一行的列数不同,代表不同的输入数,即AND2,AND3等,第一列是AND门的输出,我想将同一类型即列数相同的行提取出来,输出到一个新的文件中。思路如下:加入某一行有4列内容,那么这一行的第四列非空,而第五列一定是空的。某一列是否为空可以转化为求字符串的长度问题,如果这一列非空,那么长度大于等于1,否则长度为0。代码:############################## AND > AND4 #提取4输入AND门######原创 2020-10-24 19:24:43 · 1741 阅读 · 1 评论 -
Linux使用小技巧及注意事项
文章目录注意事项普通用户创建文件夹和文件权限注意事项同一个txt,在windows环境处理过后(包含换行符处理),因为windows和Linux环境下回车的表示不一样,windows下是\r\n,Linux下是\n。在Linux下用Vim打开文件,可以看到多出来的\r被vim解释成了^M。普通用户创建文件夹和文件权限#root下用chmod命令更改目录的权限,可以让普通用户创建文件,#其中/home/username为要更改权限的目录Chmod -R 777 /home/username原创 2020-10-19 14:49:27 · 124 阅读 · 0 评论 -
Linux下统计txt文件的行数并存储为变量
有node.txt,其中的内容为:node.txt:224364统计node.txt中内容的行数,并将行数存储为变量nodenum,可使用如下命令:nodenum=$(cat node.txt | wc -l) #注意这里是英文字母l,不是数字1调用变量nodenum时,使用$nodenum即可。...原创 2019-01-11 15:19:22 · 2572 阅读 · 0 评论 -
Linux下将txt的内容存储为变量
有a.txt,其中的内容为:a.txt:1 2 43 5 4 2 7 6将a.txt中的内容存储为变量a,使用如下命令:a=$(cat a.txt)调用变量a时,使用$a即可。原创 2019-01-11 15:15:32 · 1819 阅读 · 0 评论 -
Linux下使用grep完成文件部分相同内容的匹配
利用grep命令,我们可以对两个txt文件中部分相同的内容进行匹配,假如我有两个文件分别是a.txt和b.txt,内容如下:a.txt:G2554 10 A 45G3479 7 B 78G2356 9 C 66G1884 6 D 90b.txt:G2554G2356假如我想筛选出a.txt中与b.txt的第一列...原创 2019-01-04 15:26:46 · 3084 阅读 · 0 评论