首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将grep结果赋给shell变量后丢失换行符

在 shell 脚本中,当你使用 grep 命令将结果赋给一个变量时,会丢失换行符。为了解决这个问题,你可以使用 mapfile 命令将 grep 的输出结果存储到一个数组变量中,然后使用 printf 命令将数组中的元素输出到一个变量中,从而保留换行符。

以下是一个示例脚本:

代码语言:bash
复制
#!/bin/bash

# 使用 mapfile 命令将 grep 结果存储到数组变量中
mapfile -t result_array < <(grep 'pattern' file.txt)

# 使用 printf 命令将数组中的元素输出到变量中,保留换行符
result_var=$(printf '%s\n' "${result_array[@]}")

# 输出结果
echo "$result_var"

在这个示例中,我们使用 mapfile 命令将 grep 命令的结果存储到一个名为 result_array 的数组变量中。然后,我们使用 printf 命令将数组中的元素输出到一个名为 result_var 的变量中,并保留换行符。最后,我们使用 echo 命令输出结果。

需要注意的是,这个方法只适用于将 grep 结果存储到一个变量中,如果你需要将 grep 结果传递给其他命令,可以使用管道(pipe)来实现。例如:

代码语言:bash
复制
grep 'pattern' file.txt | xargs -I {} echo "Result: {}"

在这个示例中,我们使用管道将 grep 命令的结果传递给 xargs 命令,然后使用 -I 选项指定一个占位符 {},最后使用 echo 命令输出结果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux使用技巧:linux下命令值shell变量

很多小伙伴在写shell脚本的时候需要把命令输出的值一些变量,使得脚本在运行过程中能够顺利使用这些变量。...例如:很多时候我们就需要获取当前目录的绝对路径,pwd这个命令大家在熟悉不过,可是要把这个命令的输出值变量就不知道何从下手了。...莫慌,办法还是有的,我们可以把这个命令的输出值一个叫pwd的变量(当然,你也可以随意命名一个变量名称)。...在第9行代码中,我们直接输出最近10次登陆的详情,这属于是直接使用,在第10行代码中我们使用了变量,实际运行结果与第9行一致。...输出结果如下: ? 命令参数也是完全可以带上的,我们来看一下: 1 #!

2.9K30

shell-脚本集合3

read命令读取一个输入行,直至遇到换行符。行尾的换行符在读入时将被转换成一个空 字符。如果read命令未跟变量名,读入的行将被内置变量REPLY。...如果带-r选项,read命令忽略反斜杠/换行符对,而把反斜杠作为行 的一部分。read命令有4个控制选项:-a,-e,-p,-r②。...把用户键入的第一个词存到变量first中,把该行的剩余部分保存到变量last中 read              标准输入读取一行并赋值内置变量REPLY read –a arrayname 读入一组词...,依次赋值数组arrayname③ read -e           在交互式shell命令行中启用编辑器。...例如,如果编辑器是vi,则可以在输入行时使用vi命令③ read –p prompt    打印提示符,等待输入,并将输入赋值REPLY变量③ read –r line      允许输入包含反斜杠

67810
  • ——深入理解Shell编程中的变量(理论与实例)

    在本篇指南中,我们详细讲解Shell中的变量类型、定义方法、使用技巧以及常见的变量操作,帮助你熟练掌握变量的使用,让你的Shell脚本更加高效和强大。让我们一同深入学习Shell中的变量世界吧!...(变量引用),从而能够直接调用现有变量的值来新的变量。...例如,执行以下操作可以调用变量Version 的值,将其一个新的变量java,最终的值为“java7.7"。...在双引号范围内,使用“$”符号可以引用其他变量的值(变量引用),从而能够直接调用现有变量的值来新的变量。...localhost ~] java='java $Version' [root@localhost ~] echo $java java $Version 3.反撇号(``) 反撒号主要用于命令替换,允许执行某个命令的屏幕输出结果赋值变量

    10720

    shell脚本控制服务的启动和关闭 - 具备详细案例

    + 可能报错 「预期结果」 通过ps -ef|grep tomcat 命令, 即可查看到tomcat进程信息 「最常见的报错」 8080端口被占用了,因为tomcat默认端口就是8080 此时可以通过...print $2 代表取第2列的数据,即当前场景的进程号 27851 shell中为变量赋值 和 取值 使用的是() 和 变量 这两种用法 基本示例示例 a=$(date) echo $a # Wed...Apr 20 20:50:48 CST 2022 tomcat的shell脚本中 pid=$(ps -ef | grep tomcat|grep -v grep| awk '{print $2}')...即将各种操作得到的pid赋值pid变量 shell判空 if [ !...-z "$pid" ]可以动态的获取pid变量的值放入判断语句中 单引号: 里面的内容就认为是一个字符串, 不会动态的使用里面的变量的值.例如,echo 'pid',输出结果为 pid 「shell脚本中输出换行符

    2.7K20

    第二十九章 : 读取键盘输入

    在这个脚本中,我们看一下我们怎样程序增加交互性功能。...Running thisscript results in this: 我们使用带有 -n 选项(其会删除输出结果末尾的换行符)的 echo 命令,来显示提示信息,然后使用 read 来读入变量 int...这一行把 grep 命令的输入结果赋值变量 file_info。grep 命令使用的正则表达式确保用户名只会在 /etc/passwd 文件中匹配一行。...我们先存储 IFS 的值,然后一个新值,再执行 read 命令,最后把 IFS 恢复原值。显然,完成相同的任务,在命令之前放置变量名赋值是一种更简明的方式。...在上面的例子中,read 在它的子 shell 环境中,把 foo 赋值变量 REPLY,但是当命令退出,子 shell 和它的环境将被破坏掉,这样赋值的影响就会消失。

    32110

    【Linux操作系统】探秘Linux奥秘:Linux 操作系统的解密与实战

    实验内容 (1)在UNIX/Linux系统中,用户登录到系统,可以看到一个shell提示符(#或$)。...在UNIX/Linux系统中,用户可以定义自己的变量。定义变量就像在其他程序设计语言里一样被引用。引用变量时需要使用“$”作为变量名的前导字符。...默认情况下,每个echo命令执行完毕后会产生一个换行符,如果不带参数执行此命令,输出一个空行。用法为: echo [options] string ......若值的个数大于变量个数,则多余的部分最后一个变量;若值的个数小于变量个数,则后面多余的变量被置空。如果没有指定变量名,则默认使用REPLY作为变量名。...在此过程中,我注意到环境变量输入时,使用命令env和export未能正确显示结果,后来发现只需输入env和export即可,因为已经包含了 细致观察与细节注意 在实验中,我发现了一些细微但重要的差异,

    18410

    小白Linux入门--入门篇(二):Linux下的shell编程入门

    正文 在linux系统中,我们一般都是用C语言写服务端程序,但是一般我们不直接启动这个程序,而是通过一个shell脚本启动和关闭(需要设置一些环境变量和防止打开多个该程序,打开多个需要找到pid才能关闭...shell输出结果: ?...可以看到,demo.sh的输出结果为100,但是返回值是0 ---- 3shell中执行命令 如果我们想在shell中执行一段命令,并将该命令的值存放到一个变量中,就要用到` `符号(在1数字旁边) #.../bin/sh echo "Please input:" read a echo "a=$a" 输出结果: ? read命令读取一个输入行,直至遇到换行符。...行尾的换行符在读入时将被转换成一个空字符 如果read命令后有变量名,输入内容变量。 如果read命令未跟变量名,读入的行将被赋值内置变量REPLY。

    1.2K30

    awk 的进阶使用案例

    记录分隔符:默认的输入和输出的分隔符都是回车,保存在内建变量ORS和RS中。 $0变量:它指的是整条记录。如awk '{print $0}' test输出test文件中的所有记录。...awk可跟踪域的个数,并在内建变量NF中保存该值。如 awk '{print $1,$3}' test打印test文件中第一和第三个以空格分开的列(域)。...如果第一个域大于第三个域,$1就赋值max,否则$3就赋值max。 awk '$1 + $2 < 100' test:如果第一和第二个域相加大于100,则打印这些行。...数组name中的下标是一个自定义变量x,awk初始化x的值为0,在每次使用后增加1。第二个域的值被name数组的各个元素。...分配给数组line的是第一个域的值,所有记录处理完成,special for循环删除每一个元素。

    1.9K20

    《Linux命令行与shell脚本编程大全》第十一章 构建基本脚本

    脚本最有用的特性之一就是可以从命令输出中提取信息,并将其变量。...#2) ps的输出传给grepgrep将过滤掉ps输出的Title部分,-v PID表示不包含PID的行。     #3) awk打印输出grep查找结果的第一个字段,即pid字段。    ...#4) 上面的三个组合命令是在反引号内被执行的,并将执行的结果赋值数组变量${K}。     #5) kill方法杀掉数组${K}包含的pid。    ...命令的输出变量 选项和表达式放在脚本的不同行可以让处理过程变得清晰。...还可以在bash计算机中赋值变量,在bc计算机中创建的变量只在bc计算机中有效,不能再shell脚本中使用 11.8 退出脚本 Shell中运行的每个命令都使用退出吗告诉shell它已经运行完毕。

    1.7K70

    Linux基础——正则表达式

    .$ 搜索行以A至Z的一个字母开头,然后跟两个任意字母,然后跟一个换行符的行。找到第5行。...标题名应该唯一;如果不是,将会混淆结果,因为脚本在查看调用脚本前首先搜索函数调用相应的shell。 2、定义函数的格式为: ?...保存脚本文件增加执行权限:chmod +xdel.lines 执行脚本进行测试: ? 注: 1、basename 命令能够从路径中分离出文件名。...通常用于shell 脚本中 2、shift 语句用于迁移位置变量 $1~$9 依次向左传递例如, 例1:若当前脚本程序获得的位置变量如下: $1=file1、$2=file2、$3=file3、$4...=file4 则执行一次 shift命令,各位置变量为: $1=file2、$2=file3、$3=file4 再次执行 shift 命令,各位置变量为: $1=file3、$2=file4 例2:

    4.3K30

    Shell脚本——内置命令

    三、echo命令 echo 是一个 Shell 内建命令,用来在终端输出字符串,并在最后默认加上换行符。...内置命令,用来从标准输入中读取数据并赋值变量。...options和variables都是可选的,如果没有提供变量名,那么读取的数据存放到环境变量 REPLY 中。...pwd 显示当前工作目录的路径名 read 从 STDIN 读取一行数据并将其一个变量 readarray 从 STDIN 读取数据行并将其放入索引数组 readonly 从 STDIN 读取一行数据并将其一个不可修改的变量...return 强制函数以某个值退出,这个值可以被调用脚本提取 set 设置并显示环境变量的值和 shell 属性 shift 位置参数依次向下降一个位置 shopt 打开/关闭控制 shell 可选行为的变量

    2.1K10

    grep无法查找shell传过来的变量?先注意一下文本格式吧!

    昨天,同事告诉我发现一个诡异的问题,grep 无法搜索 shell 中的变量,着实很惊讶。到他所说的服务器上试了下,还真是不行!.../bin/bash cat 1.txt|while read userId; do         grep $userId 2.txt done 结果,发现居然可以输出结果!证明这系统没有问题啊!...+ sleep 3 难怪找不到,grep变量已经变了!...执行恍然大悟: [root@localhost ~]#  sh -x test + cat -A userid.txt + read userId + grep '0001^M$' record.txt...如果和发行版没关系的话,那造成 2 个不同结果的原因就只有一个:在我用 sz+rz 命令所有文本传送到 centos 的过程中,文件很可能被自动转格式了!好吧,具体就不深究了,有兴趣的可以试试看。

    4.3K90

    SHELL(bash)脚本编程二:语法

    shell命令执行均有返回值(会特殊变量$?),是范围为0-255的数字。返回值为0,表示命令执行成功;非0,表示命令执行失败。(可以使用命令echo $?...以符号;分隔的命令按顺序执行(和换行符的作用几乎相同),shell等待每个命令执行完成,它们的返回值是最后一个命令的返回值。 以符号&&和||连接的两个命令存在逻辑关系。...然后返回结果与A作异或运算并赋值A。 ((A^=A>=7?A-1:(B<<1)+3)) echo $A 执行结果: [root@centos7 temp]# ....-d file ] && grep -q hello file || awk '/world/' file # 可以控制操作符连接的命令写成这样来忽略&&命令的影响(使用了内置命令true来返回真).../test.sh "$(seq 10)" # 注意此处"$(seq 10)"将作为一个整体赋值$1,如果去掉双引号将会扩展成10个值并 $1 $2 ... ${10} 3 root:x:0:0

    1.3K20

    Linux 命令(228)—— shopt 命令(builtin)

    shopt -u cdspell shopt | grep cdspell cdspell off 5.Shell 选项 cdable_vars: 如果 cd 内置命令的参数不是一个目录...,就假设它是一个变量名,变量的值是将要转换到的目录。...histverify: 如果设置,且 readline 正被使用,历史替换的结果不会立即传递给 Shell 解释器。而是结果行装入 readline 编辑缓冲区中,允许进一步修改。...huponexit: 如果设置,当一个交互式登录 Shell 退出时,Bash发送一个SIGHUP(挂起信号)所有的作业。 interactive_comments: 在一个交互式 Shell中。...promptvars: 如果设置,提示串在被扩展再进行变量和参量扩展。缺省为打开。 restricted_shell: 如果 Shell 在受限模式下启动就设置这个选项。该值不能被改变。

    1.9K20

    Shell特殊变量和命令行参数详解

    变量赋值时,等号周围不能有任何空白符。 为了变量空值,可以在等号后跟一个换行符。 用set命令可以查看所有的变量,unset var命令可以清除变量var,var相当于没有定义过。...对shell变量的引用方式很多,用这些方式可以方便的获取shell变量的值,变量值的长度,变量的一个字串,变量被部分替换的值等等。...未指定目录时,cd命令转向该目录 IFS:内部字段分隔符,一般是空格符、制表符和换行符,用于由命令替换,循环结构中的表和读取的输入产生的词的字段划分 LANG:用来为没有以LC_开头的变量明确选取的种类确定...如果RANDOM被复位,即使随后再设置,它也失去特定的属性 REPLY:当没有read提供参数时设置 SHELL:当调用shell时,它扫描环境变量以寻找该名字。...3.数值变量 shell中默认把变量值当作字符串,例如: age=22 age=${age}+1 echo ${age} 输出结果为22+1,而不是23,因为shell将其解释为字符串,而不是数学运算

    2.5K60

    shell基础

    /tmp/shell/example.sh 说明:前面两种方法执行shell脚本时都是在当前shell(称为父shell)中开启的一个子shell环境中去执行,shell脚本执行完shell环境随即关闭...在代码运作的过程中,可能会把某些命令的执行结果保存起来,后续代码需要使用这些结果,就可以直接使用这个变量。 # 3.变量如何定义?...说明: $变量名 和 ${变量名}的异同 相同点:都可以调用变量 不同点:${变量名}可以只截取变量的一部分,而$变量名不可以 # 2、 命令执行结果赋值变量 # B=`date +%F` # echo...export A=hello # 临时一个本地变量(临时变量)变成环境变量 # env|grep ^A A=hello 永久生效: vim /etc/profile 或者 ~/.bashrc...3]=v4 一次赋予多个值 数组名=(值1 值2 值3 ...) array=(var1 var2 var3 var4) array1=(`cat /etc/passwd`) 文件中每一行赋值

    1.8K30
    领券