Questions tagged «text-processing»

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

6
如何将制表符分隔的数据转换为逗号分隔的数据?
我通过亚马逊的ec2命令行工具请求ec2快照列表: ec2-describe-snapshots -H --hide-tags > snapshots.csv 数据看起来像这样: SnapshotId VolumeId StartTime OwnerId VolumeSize Description snap-00b66464 vol-b99a38d0 2012-01-05 5098939 160 my backup 我如何在将数据重定向到之前拦截数据snapshots.csv并执行以下操作: 用逗号替换“制表符” 用引号封装值 如果值是全数字,请在=其前面加上一个前缀,以便excel将其视为文本-例如OwnerId应为"=5098939“(如果不能内联完成则不需要此,而是需要脚本文件或函数) 所需的输出: "SnapshotId","VolumeId","StartTime","OwnerId","VolumeSize","Description" "snap-00b66464","vol-b99a38d0","2012-01-05","=5098939","=160","my backup"

3
如何通过一个表达式用一个单词搜索和替换多根针?
假设您有一个文本文件: foo fnord bar bizz foo poit 现在,我想将“ foo”和“ bar”都替换为“ narf”。 我知道我可以使用: sed -e 's/foo/narf/g' -e 's/bar/narf/g' fileName 但是,我想使用一个OR运算符,该运算符告诉正则表达式通过一个表达式匹配两个指针。 我打了一些手册,我认为管子应该符合我的需求,但是我尝试了 sed -e 's/foo|bar/narf/g' -i fileName 它没有用,甚至没有抛出错误。 我在这里做错了什么?


5
在POSIX.2中将文本从最后一个标记获取到EOF
我有一个带有标记线的文本,例如: aaa --- bbb --- ccc 我需要从最后一个标记(不包括)到EOF获得文本。在这种情况下 ccc POSIX.2中是否有一种优雅的方式?现在,我用两个运行:先用nl和grep过去发生与各自的行号。然后,我提取行号并用于sed提取有问题的块。 文本段可能会很大,因此恐怕要使用一些添加文本的方法,例如将文本添加到缓冲区中,如果遇到标记,则会清空缓冲区,因此在EOF处,最后一个块位于缓冲。

5
UNIX实用程序的智能程度如何?
Unix实用程序,例如sort,find,grep,diff等非常易于执行快速任务,有时甚至根本不需要编写任何代码。 我想知道它们在内部使用什么算法,以及如何智能地为特定任务确定特定算法?例如,如果sort得到一个巨大的输入文件,是否会对不同的数据大小使用不同的算法? grep在搜索不同数据集时是否智能切换算法?


3
sed输出如何像printf的格式化打印一样格式化?
sed可以用类似于printf的格式化打印格式的字符串替换文本吗? 以下sed命令用变量中指定的多个值替换以“ $ domain”的当前值开头的行。 /bin/sed "s/\(^${domain} *${limittype} * ${limititem}.*\)/$EXPL#\1\n${domain} ${limittype} ${limititem} ${value}/" /etc/security/limits.conf 但是,由于domain等的值的长度不同,因此无法正确对齐输出。 因此输出将类似于 #oracle hard nproc 131072 oracle hard nproc 666 虽然有效,但很难阅读。我宁愿得到像 #oracle hard nproc 131072 oracle hard nproc 666 我可以拿到的最好的输出是: /bin/sed "s/\(^${domain}\)\( *\)\(${limittype}\)\( *\)\(${limititem}\)\( *\)\(.*\)/$EXPL#\1\2\3\4\5\6\7\n${domain}\2${limittype}\4${limititem}\6${value}/" /etc/security/limits.conf 但是我相信必须有一种更优雅的方法来做到这一点。 所述sed的一个衬里文件包含一些实例中使用指定数目的字符,例如 sed -e :a -e 's/^.\{1,78\}$/ &/;ta' # set at …

1
解析(可伪造的)nmap输出以使用awk之类的文本工具打印IP \ t [所有打开的端口]的列表
我想找到一种方法,为发现至少有一个开放端口的每个IP地址打印,打印该IP地址,然后列出由逗号分隔的开放端口列表。端口和IP地址应使用制表符分隔符分隔。 我可以通过丑陋的方式来做到这一点,方法是仅对IP地址进行grep,将其写入文件,然后使用IP地址结果文件作为输入文件再次对nmap文件进行grep,然后使用cut和sed修剪打开的端口,将其写入文件,然后加入两个文件。这是一个丑陋的过程,在边缘情况下无法可靠地工作。 有没有一种简单的方法可以用awk做到这一点?我想我需要在awk中有一个函数来查找所有打开的端口并返回它们,以便可以将它们与IP地址一起打印,但是我还没有找到如何做的方法。 源数据示例: Host: 10.0.0.101 ()Ports: 21/closed/tcp//ftp///, 22/closed/tcp//ssh///, 23/closed/tcp//telnet///, 25/closed/tcp//smtp///, 53/closed/tcp//domain///, 110/closed/tcp//pop3///, 139/open/tcp//netbios-ssn///, 143/closed/tcp//imap///, 445/open/tcp//microsoft-ds///, 3389/closed/tcp//ms-wbt-server/// 预期输出数据: 10.0.0.101 139,445

2
从包含大于5000的数字的文本文件中复制每一行
嗨,我已经尝试过许多解决类似问题的方法,但似乎没有一种对我有用。我有一个文本文件,其中每一行在字符串“ length_”之后都有未定义的数字长度。如何选择该数字等于或大于5000的所有行?到目前为止,这是我尝试过的最干净的代码尝试,但是它仍然只会生成一个空文件(即使file1肯定包含数字大于5000的行) grep --regexp="length_\"[5-9][0-9]\{3,\}\"" file1.txt > file2.txt 输入文本文件内例如信息: /file/path/xx00:>TEXT_1_length_81903_cov_10.5145_ /file/path/xx01:>TEXT_2_length_348971_cov_13.6753_ /file/path/xx02:>TEXT_3_length_4989_cov_11.9516_ /文件/路径/ XX03:> TEXT_4_length_29811_cov_13。 7948_ /file/path/xx03:>TEXT_5_length_2567_cov_13.7948_ 输出文本文件中的所需示例信息: / file/ path / xx00 :> TEXT_1_length_81903_cov_10.5145_ /file/path/xx01:>TEXT_2_length_348971_cov_13.6753_ /file/path/xx03:>NODE_4_length_29811_cov_13.7948_

3
在包含数千列的文件中乘以特定列
in文件看起来像这样 -17.3644 0.00000000 0.00000000 .... -17.2703 0.00000000 0.00000000 .... -17.1761 0.00000000 0.00000000 .... -16.5173 0.00000000 0.00000000 .... -16.4232 0.00000000 0.00000000 .... 期望输出应为 -173.644 0.00000000 0.00000000 .... -172.703 0.00000000 0.00000000 .... -171.761 0.00000000 0.00000000 .... -165.173 0.00000000 0.00000000 .... -164.232 0.00000000 0.00000000 .... 所以我想将第一列乘以10,但同时还要保留其他1000列。与awk '{print $1*10}' infile > outfile您只打印第一列,我怎么能还保持其他列?

3
如何将排序的文件保存在单独的目录中?
我有一个名为baypass的文件夹,其中包含2181个文件,如下所示(仅几个文件为例): anacovis2_210_summary_betai_reg.out_new anacovis2_2110_summary_betai_reg.out_new anacovis2_2111_summary_betai_reg.out_new anacovis2_2112_summary_betai_reg.out_new 我想对它们全部进行排序,所以我用了 ls -v -1 这为我完成了排序工作,但是我想将这些排序后的文件保存在目录中。因此,当我键入“ ls -v -1”时,文件将被排序,但是如果键入pwd或ls或任何其他命令,它们将再次不排序。那么如何保存已排序的文件?我想对它们进行排序和保存,以便能够合并它们。文件的顺序非常重要。
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.