Questions tagged «text-processing»

通过程序,脚本等操作或检查文本


1
ksh93这么快吗?
因此,总的来说,我倾向于寻找sed文本处理工具,尤其是大文件,并且通常避免在shell本身中做这些事情。 我认为,这可能会改变。我在四处闲逛,man ksh我注意到了这一点: <#pattern Seeks forward to the beginning of the next line containing pattern. <##pattern The same as <# except that the por‐ tion of the file that is skipped is copied to standard output. 对现实世界的有用性表示怀疑,我决定尝试一下。我做了: seq -s'foo bar ' 1000000 >file ...对于一百万行数据如下所示: 1foo bar ... 999999foo bar 1000000 …

5
搜索字符串并打印范围内前后的所有内容
我有这个文件: sometext1{ string1 } sometext2{ string2 string3 } sometext3{ string4 string5 string6 } 我想在该文件中搜索特定的字符串,并在此字符串之前将所有内容打印到开头,{并在此字符串之后将所有内容打印到结尾}。我尝试使用sed实现此目的,但是如果尝试打印/{/,/string2/sed 范围内的所有内容,例如sed会打印以下内容: sometext1{ string1 } sometext2{ string2 sometext3{ string4 string5 string6 } 如果我搜索字符串“ string2”,则需要输出为: sometext2{ string2 string3 } 谢谢。

8
如何将行追加到上一行?
我有一个日志文件,需要对其进行分析和分析。文件包含类似以下内容: 文件: 20141101 server contain dump 20141101 server contain nothing {uekdmsam ikdas jwdjamc ksadkek} ssfjddkc * kdlsdl sddsfd jfkdfk 20141101 server contain dump 基于上述情况,我必须检查起始行是否不包含日期或我必须附加到前一行的数字。 输出文件: 20141101 server contain dump 20141101 server contain nothing {uekdmsam ikdas jwdjamc ksadkek} ssfjddkc * kdlsdl sddsfd jfkdfk 20141101 server contain dump

2
如何删除多行文本文件中嵌套大括号之间的所有文本?
这个问题来自于 如何删除多行文本文件中大括号之间的所有文本?(完全一样,但没有嵌套要求)。 例: This is { {the multiline text} file } that wants { to {be changed} } anyway. 应成为: This is that wants anyway. 是否可以通过某种单行bash命令(awk,sed,perl,grep,cut,tr ...等)来执行此操作?

8
行的开头或中间的模式的Grep
我首先要说的是,我认为这个问题比听起来听起来要简单得多。 我需要做的是:检查PATH环境变量中的文件夹。可能在开始时或之后。我只需要验证该文件夹在那里。 我的问题的例子-让我们使用/opt/gnome。 场景1:文件夹不在PATH的开头 # echo "$PATH" /sbin:/usr/sbin:/opt/gnome:/var/opt/gnome # echo "$PATH" | grep ":/opt/gnome" /sbin:/usr/sbin:/opt/gnome:/var/opt/gnome 请注意,grep必须足够具体,以使其不会被捕获/var/opt/gnome。因此冒号。 场景2:文件夹位于PATH的开头。 # echo "$PATH" /opt/gnome:/sbin:/usr/sbin:/var/opt/gnome # echo "$PATH" | grep "^/opt/gnome" /opt/gnome:/sbin:/usr/sbin:/var/opt/gnome 这是我的问题-我需要使用此文件夹搜索冒号或行首。我想做的是以下两个括号表达式之一: # echo $PATH | grep "[^:]/opt/gnome" # echo $PATH | grep "[:^]/opt/gnome" 但是[^并[:有自己的含义。因此,以上两个命令不起作用。 有没有一种方法可以在一个命令中针对这两种情况进行grep?



3
粘贴命令:设置(多个)定界符
在Linux中,paste(GNU coreutils)8.13 存在以下问题: 尝试设置除默认定界符(TAB)之外的另一个定界符会导致只打印定义的定界符的第一个字符,或者完全忽略它。 问题:使用时如何定义(多个)定界符 paste? 简单地使用例如abc-123作为分隔符会很好。“多个”是指例如2个TABS而不是1个。 到目前为止,我尝试使用的包围定界符的模式是 --delimiters="\delimiter" --delimiters='\delimiter' --delimiters=$"\delimiter" --delimiters=$'\delimiter' 全部具有相同的结果:仅接受或完全忽略第一个字符。我也尝试过简短版本-d"\"和多个实例&ndahs; 没有。 也: --delimiters="\\" →错误信息 什么是完美的,尽管不是我想要的: --delimiters="\n" →换行符 --delimiters="\0" →之间没有任何东西 --delimiters="\t"→ TAB,默认设置。大。

7
替换除最后x次出现以外的字符
我有一个文件,其中有一堆与IP相关的主机名看起来像这样: x-cluster-front-1 192.168.1.2 x-cluster-front-2 192.158.1.10 y-cluster-back-1 10.1.11.99 y-cluster-back-2 10.1.157.38 int.test.example.com 59.2.86.3 super.awesome.machine 123.234.15.6 我希望它看起来像这样: x-cluster-front-1 192.168.1.2 x-cluster-front-2 192.158.1.10 y-cluster-back-1 10.1.11.99 y-cluster-back-2 10.1.157.38 int-test-example-com 59.2.86.3 super-awesome-machine 123.234.15.6 我该如何更换。为了方便第二列进行排序,在第一列中使用-(连字符)来表示(点)?我当时想用sed替换点直到第一个空格,或者替换除最后三个点以外的所有点,但是我在理解正则表达式和sed时遇到了麻烦。我可以执行简单的替换,但是这很麻烦! 这是我一直用bash编写的较大脚本的一部分。我被困在这一部分。

2
使用awk处理两个文件
我读的比较使用Unix和awk中两个文件。真的很有趣。我已经阅读并测试了它,但是我无法完全理解它并在其他情况下使用它。 我有两个文件。file1有一个字段,另一个有16个字段。我想阅读file1的元素,并将它们与的第3个字段进行比较file2。如果每个元素都匹配,我将中的字段5的值相加file2。举个例子: 文件1 1 2 3 文件2 2 2 2 1 2 3 6 1 2 4 4 1 1 2 3 6 3 3 3 4 对于元素1,file1我想在字段file23的值为1的字段5中添加值。并对元素2和3中的元素执行相同的操作file1。1的输出为(3 + 4 = 7),2的输出为2,3的输出为4。 我不知道如何用awk编写它。



5
连接具有唯一标识符的两个文件
我要加入两个文件,分别有大约12900和4400个条目。这些文件包含全球所有陆基气象观测站的位置信息。最大的文件每两周更新一次,较小的文件大约一年一次。原始文件可以在这里找到(http://www.wmo.int/pages/prog/www/ois/volume-a/vola-home.htm和 http://weather.rap.ucar.edu/surface/ station.txt)。我已经使用一些混合的awk,sed和bash脚本来操纵我的文件。我使用GEMPAK软件包使用这些文件来可视化数据,该软件包可从Unidata免费获得。最大的文件将与GEMPAK一起使用,但不能完全发挥作用。为此,需要一个联接。 文件1包含气象站的位置信息,其中前6位数字是唯一的站标识符。不同的参数(站号,站名,国家/地区代码,纬度和站高)仅由其在行中的位置定义,即没有制表符。 060090 AKRABERG FYR DN 6138 -666 101 060100 VAGA FLOGHAVN DN 6205 -728 88 060110 TORSHAVN DN 6201 -675 55 060120 KIRKJA DN 6231 -631 55 060130 KLAKSVIK HELIPORT DN 6221 -656 75 060160 HORNS REV A DN 5550 786 21 060170 HORNS REV B DN …

1
将剪贴板中的HTML保存为Markdown文本
我希望能够突出显示网页的一部分并将其复制到剪贴板,然后将其作为markdown保存到我的本地磁盘中。我需要一种有效的方法来做到这一点。 我当前麻烦的方法是: 突出显示部分并复制到剪贴板 打开Libre Office Writer 粘贴到作家 将Writer文档另存为HTML 打开终端 cd 到我保存HTML的目录 pandoc -s -r html /home/me/a/b/mydoc.html -o /home/me/a/b/mydoc.md 显然,我需要一个更好的方法!有什么建议么?

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.