Questions tagged «sed»

Sed被称为流编辑器,因为它可以对标准输入或用户指定的文件执行各种过滤和/或转换功能。它通常用于搜索和替换文本文件。如果您的问题与文本处理有关,则此标签可能是合适的

3
使用grep / sed / awk从字符串中提取单词
我有一串 00:28:04 /usr/lib/jvm/jre/bin/java -DJDBC_CONNECTION_STRING= -Dspring.profiles.active=qa -XX:MaxPermSize=256 并要提取的词qa后面-Dspring.profiles.active。 我将字符串保存在文件text.txt中只是为了对其进行演示。 当我做 grep -r -o "spring.profiles.active=" text.txt 结果是 spring.profiles.active= 这个词并不总是存在的qa,它可能是prod或dev。 我想做的就是找到单词spring.profiles.active,然后将其=提取出来。 我想使用shell脚本,因为我使用这个词来配置服务器上的其他项目。 这可能吗,如果可以,我该怎么做。
12 command-line  bash  grep  sed  awk 

3
sed通过多行句子替代
我是使用sed的新手,但是我一直在尝试使用sed s/..../..../(替代)来修改整个句子(如果它位于一行上),但是我不知道如何修改可能被分成两行的句子的替代解决方案,例如: 这个: Lorem Ipsum is simply dummy text of the printing and typesetting industry. 实际上是这样写的: Lorem Ipsum is simply dummy text of the printing and typesetting industry. 即使是两行而不是一行,您如何检测到它或对其进行编码以替换整个句子?
11 command-line  sed 

2
:a; $!N;是什么意思 在sed命令中?
$ (echo hello; echo there) | sed ':a;$!N;s/\n/string/;ta' hellostringthere 上面的sed命令用字符串“ string”替换换行符。但是我不知道:a;$!N;s/\n/string/;ta单引号内的含义。我知道中间部分s/\n/string/。但是我不知道first(:a;$!N;)和last(ta)部分的功能。

2
使用sed命令时如何获得退出状态?
该grep命令给出退出状态: $echo "foo.bar" | grep -o foo foo $echo $? 0 $echo "foo.bar" | grep -o pop $echo $? 1 但是我需要使用,sed并且我意识到它没有退出状态: $echo "foo.bar" | sed 's/bar.*$//' foo. $echo $? 0 $echo "foo.bar" | sed 's/pop.*$//' foo.bar $echo $? 0 我知道我应该-q尝试使用该选项,但是我没有成功。
11 command-line  sed 

2
重命名文件时避免替换空格
我正在尝试重命名这样的文件: for file in *; do mv -i "$file" "$(echo "$file" | sed -e 's/[^A-Za-z0-9._-]/_/g')"; done 但是该sed命令将所有空格替换为_。 如何编辑sed命令以使其包含空格和指定的字符?我试过使用,\s但不起作用... 编辑: 例如:文件trip: hill,应重命名:trip_ hill,但是上面的命令使它成为trip__hill。


3
如何用sed插入多行
我要添加这个 #this ##is my text 行前 the specific line 我试过了 sed -i '/the specific line/i \ #this ##is my text ' text.txt 但只会添加“文本”。 我也试图与不同的组合\和" ",但毫无效果。
10 bash  sed 

2
此“ apt-get remove”指令有什么作用?
以下代码做什么? 我在互联网上找到了它,所以我将其复制并粘贴到终端中,但是当我安装新内核时,它只能检测到旧内核。 sudo apt-get remove --purge $(dpkg -l 'linux-image-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d')
10 command-line  apt  kernel  sed 

2
使用AWK获得第二列
我似乎无法获得awk命令来获取第二列数据。 重击代码: filter_data=$(awk "{if(/$filter:/) print $2}" < scanresults_temp.txt) printf "$filter_data \n" $ filter变量是传递到Shell脚本中的Download或Upload的值。因此,awk使用术语“下载”或“上传”来搜索正确的行。 文件内容为: Testing download speed................................................................................ Download: 51.13 Mbit/s Testing upload speed................................................................................................ Upload: 57.38 Mbit/s 我正在尝试仅获取数字,而没有其他任何信息,例如51.13和57.38。
9 bash  grep  sed  awk 

6
一系列sed命令可在命令行上运行,但不能在脚本中运行
我正在使用此SE数据查询的.csv输出,它看起来像这样(仅包含5022个条目): "{ ""id"": 281952, ""title"": ""Flash 11.2 No Longer Supported by Google Play"" }" "{ ""id"": 281993, ""title"": ""Netbeans won't open in Ubuntu"" }" (它的行^M尾在[number]和““ title”“之间)。我需要它看起来像这样: 281952,Flash 11.2 No Longer Supported by Google Play 281993,Netbeans won't open in Ubuntu 我在某个文本编辑器中修复了该问题,该编辑器将很容易保持匿名,但是我想创建一个脚本,这样我就不必在每次刷新查询时都再次执行此操作,因此其他人可以使用它。我用过sed... 这一系列命令可以完美地工作(尽管效率可能很低;这只是一个反复试验的解决方案): # Print the ^M and remove them, write to …

2
如何用文件中的单个单词替换多行(替换)?
我的filename文件内容如下(例如): My block of line starts from here START First line second line third line END and end to here for example. 我想,以取代之间的行块START,并END只用一个词,例如用SINGLEWORD。如下所示: My block of line starts from here SINGLEWORD and end to here for example. 我可以使用以下命令找到我的代码行: grep -Pzo "START(.|\n)*END" filename 运行上述命令的结果将是这样的: START First line second line third line …

2
使用Moreutils ts进行配管
我的串行端口有输入流,新行大约每秒出现一次 wren@Raven:~$ cat /dev/ttyUSB0 A_Sensor1,B_22.00,C_50.00 A_Sensor1,B_22.00,C_50.00 A_Sensor1,B_22.00,C_50.00 A_Sensor1,B_22.00,C_50.00 A_Sensor1,B_22.00,C_50.00 我想去除空白行并为其余部分加时间戳。 sed将删除空白行并添加时间戳,但是我无法进行时间戳更新,它只会报告调用时间: wren@Raven:~$ cat /dev/ttyUSB0 | sed -e '/^$/d' -e "s/$/`date +\,%F\,%T`/" A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42 A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42 A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42 A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42 A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42 A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42 A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42 ^C 我找到了ts,它是Moreutils的一部分,可以通过管道获取更新时间戳。 wren@Raven:~$ cat /dev/ttyUSB0 | ts May 14 09:49:26 A_Sensor1,B_22.00,C_50.00 May 14 09:49:26 May 14 09:49:27 A_Sensor1,B_22.00,C_50.00 ^C 但是,我无法将ts与sed正确组合。 这看起来像它应该做我想要的,根本不产生任何输出 wren@Raven:~$ …

3
替换sed中的点(。)
因此,实际的问题是-有谁知道如何删除M-BM-特殊字符而不冒失去其他字符的危险? 我有一串文字: " . . ." 那是 space dot space dot space dot 我正在尝试将文本文件中所有出现的字符串替换为 "..." 那是 dot dot dot 我正在尝试使用sed: sed -r 's:\s\.\s\.\s\.:...:g' -i sed-dots 不幸的是,它一点也不改变输入文件。文件:https://www.dropbox.com/s/46zmiruy3ln85a1/sed-dots 当我尝试在文本编辑器中替换相同的字符串(我使用geany)时,找到并正确替换了它。 我能想到的唯一原因是这些空间中的某些(或全部)不是真正的空间,而是某些特殊字符。 有谁知道如何用sed(或任何其他命令行工具)查找和替换该字符串?请在我的文件上测试您的想法,因为问题并不像看起来的那么明显-这就是为什么我问这个问题。 使用cat -Amyfile之后,似乎这些空间不是空格而是M-BM-特殊字符的问题。.建议使用任何建议的符号进行搜索不是一个好主意,因为可能会删除某些其他字符。

5
如何使用大文本文件中的grep / sed从日期范围中获取文本?
我有大文件文本(将近3GB)-它是一个日志文件。我想从该文件中获取与7月13日至7月19日的日期范围相对应的文本行。我的日志格式为: 2016-07-12 < ?xml version> 2016-07-13 < ?xml version> 2016-07-18 < ?xml version> 2016-07-18 < ?xml version> 2016-07-19 < ?xml version> 2016-07-20 < ?xml version> sample text sample text sample text sample text sample text sample text 2016-07-20 < ?xml version> sample text sample text 2016-07-20 < ?xml version> 所以在grep/ …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.