Questions tagged «text-processing»

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

1
如何按最后一列数字排序?
我有这个输入: sdkxyosl 1 safkls 2 asdf--asdfasxy_asd 5 dkd8k jasd 29 sdi44sw 43 asasd afsdfs 10 rklyasd 4 我需要以下输出: sdi44sw 43 dkd8k jasd 29 asasd afsdfs 10 asdf--asdfasxy_asd 5 rklyasd 4 safkls 2 sdkxyosl 1 所以我需要按最后一列对行进行排序。 我不知道一行中有多少列。 我只是想不通,怎么做。我没有“ perl权力”。我只有sed,awk,cut等的平均脚本能力。 有人知道怎么做吗?

2
管道,数据如何在管道中流动?
我不了解数据在管道中的流动方式,希望有人可以澄清其中的情况。 我认为命令管道以逐行方式处理文件(文本,字符串数组)。(如果每个命令本身一行一行地工作。)文本的每一行都通过管道,命令不必等待前一个命令完成对整个输入的处理。 但似乎并非如此。 这是一个测试示例。有几行文字。我将它们大写,并重复每行两次。我这样做cat text | tr '[:lower:]' '[:upper:]' | sed 'p'。 要遵循此过程,我们可以“交互式”运行它-跳过中的输入文件名cat。管道的每一部分都逐行运行: $ cat | tr '[:lower:]' '[:upper:]' alkjsd ALKJSD sdkj SDKJ $ cat | sed 'p' line1 line1 line1 line 2 line 2 line 2 但是完整的管道确实在等我完成输入,EOF然后才打印结果: $ cat | tr '[:lower:]' '[:upper:]' | sed 'p' I am writing... …

17
如何找到最少字符的行
我正在使用任何常规UNIX命令编写Shell脚本。我必须检索具有最少字符(包括空格)的行。最多可以有20条线。 我知道我可以head -$L | tail -1 | wc -m用来查找第L行的字符数。问题是,我想到的唯一方法是使用手动编写一堆if语句,比较值的方法。 示例数据: seven/7 4for 8 eight? five! 4for由于该行的字符最少,将返回。 在我的情况下,如果多行的长度最短,则应返回一行。只要选择最小长度,就无关紧要。但是我看不到在其他情况下向其他用户显示两种方式的危害。

1
以第一列的降序对数据进行排序,对于相等的值,以升序使用第二列
请允许我澄清一下: 假设我有一些关键字,它们的使用频率如下: 12 Hi 7 Hash 7 C++ 9 Superuser 17 Stackoverflow 9 LaTeX 42 Life 9 Ubuntu 我想要的是根据频率以降序对数据进行排序,如果有一些相等的值,则应该以升序使用第二列。 sort -n -r foo.txt 第一部分而不是第二栏是否也是reversed: 42 Life 17 Stackoverflow 12 Hi 9 Ubuntu 9 Superuser 9 LaTeX 7 Hash 7 C++ 如何获得以下结果? 42 Life 17 Stackoverflow 12 Hi 9 LaTeX 9 …

6
在UNIX命令行上在Unicode规范化形式之间进行转换
在Unicode中,某些字符组合具有多个表示形式。 例如,字符ä可以表示为 “ä”,即代码点U + 00E4(c3 a4采用UTF-8编码的两个字节),或者为 “ä”,即两个代码点U + 0061 U + 0308(61 cc 88UTF-8中为三个字节)。 根据Unicode标准,这两种表示形式是等效的,但是以不同的“规范化形式”,请参阅UAX#15:Unicode规范化形式。 Unix工具箱提供了各种文本转换工具,包括sed,tr,iconv,Perl。如何在命令行上快速轻松地进行NF转换?

4
sed-用文件内容替换字符串
我有两个文件:file1和file2。 file1 具有以下内容: --- host: "localhost" port: 3000 reporter_type: "zookeeper" zk_hosts: - "localhost:2181" file2包含IP地址(1.1.1.1) 我想做的是替换localhost为1.1.1.1,这样最终结果是: --- host: "1.1.1.1" port: 3000 reporter_type: "zookeeper" zk_hosts: - "1.1.1.1:2181" 我试过了: sed -i -e "/localhost/r file2" -e "/localhost/d" file1 sed '/localhost/r file2' file1 |sed '/localhost/d' sed -e '/localhost/r file2' -e "s///" file1 但是我要么更换了整条线,要么将IP移到了我需要修改的那条线之后。

4
是否有可能在bash中从任意字节数偏移量开始读取文件?
我想找到一个8 GB日志(文本)中某处的日期。 我有点绕行一个完整的顺序读取,和第一可以做文件的二元分割(大小),或以某种方式浏览文件系统inodes(这是我知道的非常少约),开始从各个分割点读,直到我找到一个合适的距离偏移从哪里开始我的文本搜索以找到包含日期的行? tail的最后一行的读取没有使用常规的顺序读取,因此我想知道bash中是否可以使用此功能,还是我需要使用Python或C / C ++ ...但是我对某个bash选项特别感兴趣..

7
与SED正则表达式的非贪婪匹配(模拟perl的。*?)
我想用sed替换第一次AB和第一次出现AC(含)之间的字符串中的任何内容XXX。 对于例如,我有这样的字符串(该字符串是仅用于测试): ssABteAstACABnnACss 我想要类似以下的输出:ssXXXABnnACss。 我这样做是perl: $ echo 'ssABteAstACABnnACss' | perl -pe 's/AB.*?AC/XXX/' ssXXXABnnACss 但我想用实现它sed。以下内容(使用与Perl兼容的正则表达式)无效: $ echo 'ssABteAstACABnnACss' | sed -re 's/AB.*?AC/XXX/' ssXXXss

7
尾-f,但带有行号
我正在尝试查看在任意时间范围内在远程服务器上foo bar出现了多少次/var/log/foo.log,但是到目前为止我没有尝试过。 我已经有了一个计时器脚本,可以用来跟踪自开始拖尾以来已经有多长时间了/var/log/foo.log,现在我想要一种方法来判断foo bar拖尾输出中出现了多少次。 我搜索了google,但在搜索结果的前10页中没有发现任何相关信息。 这是我尝试过的令人沮丧的结果: ## works on local machine, but doesn't work as expected on remote tail -f /var/log/foo.log | grep foo\ bar | sed '=' ## works on local, but not remote tail -f /var/log/foo.log | grep foo\ bar | cat -n - ## works on local, …

4
在定界符上分割长行
我可以使用以下命令来拆分输入: foo:bar:baz:quux 入这个? foo bar baz quux 我正在尝试找出该cut命令,但它似乎仅适用于固定数量的输入,例如“前1000个字符”或“前7个字段”。我需要使用任意长的输入。

6
命令行友好的电子表格
这样的事情存在吗?基于文本的电子表格可以在CLI环境中很好地显示。我知道我可以cat foobar.csv并且愿意做,但这并不是特别实用或有吸引力。我无法想象设置表格的格式会很困难,也许还要遵循某些规则(算术?)。 Emacs具有org-mode可以很好地处理基于文本的表的功能,并允许导出为多种格式。但是,必须使用Emacs!作为Vim用户,我宁愿避免使用。




2
查找多个文件之间的共同点
我有4个文件,就像 file A >TCONS_00000867 >TCONS_00001442 >TCONS_00001447 >TCONS_00001528 >TCONS_00001529 >TCONS_00001668 >TCONS_00001921 file b >TCONS_00001528 >TCONS_00001529 >TCONS_00001668 >TCONS_00001921 >TCONS_00001922 >TCONS_00001924 file c >TCONS_00001529 >TCONS_00001668 >TCONS_00001921 >TCONS_00001922 >TCONS_00001924 >TCONS_00001956 >TCONS_00002048 file d >TCONS_00001922 >TCONS_00001924 >TCONS_00001956 >TCONS_00002048 所有文件包含2000行以上,并按第一列排序。 我想在所有文件中找到共同的地方。我尝试了awk,grep和comm,但是没有用

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.