Questions tagged «text-processing»

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

7
如何用新行替换单词
我有一个包含以下数据的文本文件,每行以结尾|END|。 T|somthing|something|END|T|something2|something2|END| 我tryig更换|END|与\n新行的sed。 sed 's/\|END\|/\n/g' test.txt 但这会产生错误的输出,如下所示: T | s o m e ... 但是我想要的是: T|somthing|something T|something2|something2 我也尝试过tr。它也不起作用。

6
重击-配对文件的每一行
这个问题是密切相关的这个和这个问题。我有一个包含多行的文件,其中每一行都是文件的路径。现在我要配对的每一行与每一不同的线(未本身)。就我的目的而言,一对A B也等于一B A对,因此仅应产生这些组合中的一个。 例 files.dat 以简写形式读取,每个字母都是文件路径(绝对或相对) a b c d e 然后我的结果应该是这样的: a b a c a d a e b c b d b e c d c e d e 最好是我想用bash解决这个问题。与其他问题不同,我的文件列表很小(大约200行),因此使用循环和RAM容量不会造成任何问题。

4
确定制表符'\ t'在一行上有多长时间
在文本处理字段中,是否有办法知道制表符的长度是8个字符(默认长度)或更短? 例如,如果我有一个带有制表符分隔符的示例文件,并且字段内容适合少于一个制表符(≤7),并且如果我之后有一个制表符,则该制表符将仅为'制表符大小–字段大小长度。 有没有一种方法可以获取一行中制表符的总长度?我不是在寻找选项卡的数量(即10个选项卡不应返回10),而是这些选项卡的字符长度。 对于以下输入数据(在字段之间分隔的选项卡和仅一个选项卡): field0 field00 field000 last-field fld1 fld11 fld001 last-fld fd2 fld3 last-fld 我希望计算每行中制表符的长度,因此 11 9 9

5
如何编辑文件中的最后n行?
有没有可以让我编辑文件中最后n行的命令?我有几个文件,里面都有不同数量的行。但是我想修改每个文件的最后n行。目标是在最后n行中用分号替换逗号。但仅在最后n行中。 我不想删除任何行,我只想在每个文件的最后n行中用分号替换每个逗号。 使用sed命令,我可以用此命令替换最后一行。如此处所述: 如何删除文件最后一行的文本? 但这仅使我能够修改最后一行,而不是最后n行。

3
如何从lshw grep两行?
我想grep主板序列号和计算机的产品型号。我用了 sudo lshw | grep -m1 serial: grep序列号(因为多次出现“ serial:”,而我想要的是第一个。因此,我该如何同时对“ product:”进行grep呢?也有多次出现product,第一个又是我想要的那个 lshw 返回此: user@ubuntu:~$ sudo lshw ubuntu-pc description: Notebook product: 23252DG (LENOVO_MT_2325) vendor: LENOVO version: ThinkPad X230 serial: R9TWZVR width: 64 bits capabilities: smbios-2.7 dmi-2.7 vsyscall32 configuration: administrator_password=disabled chassis=notebook family=ThinkPad X230 power-on_password=disabled sku=LENOVO_MT_2325 uuid=01ECC0B1-8251-CB11-8538-B7D9EC435D9B *-core description: Motherboard product: 23252DG vendor: LENOVO …

8
如果一行仅包含一个字符,如何删除行
我只想从包含特定字符的文件中删除一行,如果该行存在多次或不存在,则将该行保留在文件中。 例如: DTHGTY FGTHDC HYTRHD HTCCYD JUTDYC 在这里,我要删除的字符是C这样,命令应该删除行FGTHDC,JUTDYC因为它们C恰好有一次。 如何使用sed或来做到这一点awk?

6
如何用其他格式替换文件中的纪元时间戳?
我有一个包含纪元日期的文件,我需要将其转换为人类可读的文件。我已经知道如何进行日期转换,例如: [server01 ~]$ date -d@1472200700 Fri 26 Aug 09:38:20 BST 2016 ..但是我正在努力弄清楚如何sed遍历文件并转换所有条目。文件格式如下: #1472047795 ll /data/holding/email #1472047906 cat /etc/rsyslog.conf #1472048038 ll /data/holding/web

9
将行转换为列
我有一个文件,其中包含有关在管理程序中运行的VM的详细信息。我们运行一些命令并将输出重定向到文件。并且是以下格式的可用数据。 Virtual Machine : OL6U5 ID : 0004fb00000600003da8ce6948c441bb Status : Running Memory : 65536 Uptime : 17835 Minutes Server : MyOVS1.vmorld.com Pool : HA-POOL HA Mode: false VCPU : 16 Type : Xen PVM OS : Oracle Linux 6 Virtual Machine : OL6U6 ID : 0004fb00000600003da8ce6948c441bc Status : Running Memory …

6
如何仅替换文件中第N个出现的模式?
如何使用sed命令替换文件中字符串的第三次出现。 例: 仅更改的第三次出现is到us的文件中。 我的输入文件包含: hai this is linux. hai this is unix. hai this is mac. hai this is unchanged. 我期望输出是: hai this is linux. hai thus is unix. hai this is mac. hai this is unchanged.

3
如何删除多行文本文件中大括号之间的所有文本?
例: This is { the multiline text file } that wants { to be changed } anyway. 应成为: This is that wants anyway. 我在论坛中找到了一些类似的 主题,但是它们似乎不适用于多行大括号。 如果可能的话,我更喜欢一些单行方法,例如基于grep,sed,awk等的解决方案。 编辑:解决方案似乎还可以,但是我注意到我的原始文件包括大括号嵌套。因此,我要提出一个新问题。谢谢大家:如何删除多行文本文件中嵌套大括号之间的所有文本?

4
替换包含换行符的字符串
使用bash外壳程序,在具有以下行的文件中 first "line" <second>line and so on 我想更换的一次或多次出现"line"\n<second>用other characters,并获得每一次: first other characters line and so on 因此,我必须用特殊字符(例如"和)<和换行符来替换字符串。 在其他答案之间进行搜索之后,我发现该命令sed可以在命令的右侧(因此other characters字符串)接受换行符,但不能接受左侧的换行符。 有没有一种方法(比this更简单)使用sed或获得此结果grep?

6
如何从ps命令中提取键值对
我试图从这样的ps命令中提取应用程序名称: ps -af -u sas |grep "java"| grep -v "grep" 并产生以下结果: sas 24431 1 0 Oct10 ? 00:51:08 /usr/lib/jvm/java-1.7.0-oracle-1.7.0.25.x86_64/jre/bin/java -Denv=DEV -Dapp.name=myApp -Xms512m -Xmx1g -Dlog.dir=/apps/java/logs 我尝试使用,egrep但似乎无法正常工作: ps -af -u sas|grep "java"| grep -v "grep"| egrep -o "-Dapp.name" 如何仅获-Dapp.name取值“ myApp”?

4
如何交错两个或多个文件的行?
我试图将2个文件输出到单个文件中。我试过下面的命令: cat file1 file2 但是这里file2数据附加到file1。 我需要的是file1第一行,然后是file2第一行,file1第二行,然后是file2第二行,等等。 谁能告诉我如何以一种简单的方式做到这一点?

4
仅删除双引号中出现的逗号
在文本文件中,我要删除,(逗号)以及"(引号)(仅当双引号包含以逗号分隔的数字时)。 56,72,"12,34,54",x,y,"foo,a,b,bar" 预期产量 56,72,123454,x,y,"foo,a,b,bar" 注意:我仅以示例的方式显示上述行。我的文本文件包含很多行,如上,双引号中用逗号分隔的数字应有所不同。那是, 56,72,"12,34,54",x,y,"foo,a,b,bar" 56,92,"12,34",x,y,"foo,a,b,bar" 56,72,"12,34,54,78,76,54,67",x,y,"foo,a,b,bar" 56,72,x,y,"foo,a,b,bar","12,34,54" 56,72,x,y,"foo,a,b,bar","12,34,54","45,57,84,92","bar,foo" 预期产量: 56,72,123454,x,y,"foo,a,b,bar" 56,92,1234,x,y,"foo,a,b,bar" 56,72,12345478765467,x,y,"foo,a,b,bar" 56,72,x,y,"foo,a,b,bar",123454 56,72,x,y,"foo,a,b,bar",123454,45578492,"bar,foo" n在双引号中有许多数字,用逗号分隔。并且还要保留包含字符的双引号。 我喜欢sed文字处理工具。如果您sed对此提出任何解决方案,我感到很高兴。

4
拆分文件并将其放入相应的数据结构中?
我有一个包含以下单行的文件: {machineA=[0, 1024, 4, 1028], machineB=[1, 1025, 5, 1029]} 其中有两个数据集: machineA=[0, 1024, 4, 1028] machineB=[1, 1025, 5, 1029] 现在,我需要阅读上述文件并将其拆分,以便可以如上所述提取每台机器的信息并将其存储在某种数据结构中。 当前,我很困惑应该在bash shell脚本中使用哪种数据结构。如果我使用Java进行此操作,则可以使用,Map<String, Set<String>>但不确定在shell脚本中应该使用什么。 在将其存储在某种数据结构中之后,我需要对其进行迭代并打印出结果。 我可以使用以下shell脚本读取以上文件: #!/bin/bash while read -r line; do echo "$line" done < data.txt 但是我不确定如何以上述方式拆分上述行数据,以便能够提取每台机器的信息,然后将其存储在某些数据结构中? 更新:- 以下是我遵循glenn给出的建议后得到的shell脚本- #!/bin/bash while read -r line; do echo "$line" declare -A "$( echo …

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.