小编use*_*029的帖子

如何在Unix中的每行末尾添加100个空格

我有一个文件,每行应该包含200个字符.我收到了一个源文件,每行只有100个字符.我现在需要为每一行添加100个额外的空格.如果空格很少,我们可以使用sed,如:

 sed 's/$/     /' filename > newfilename
Run Code Online (Sandbox Code Playgroud)

由于它是100个空格,任何人都可以告诉我是否可以在Unix中添加?

unix shell awk

7
推荐指数
2
解决办法
3549
查看次数

Perl命令根据位置替换字符串

我需要检查第 300 个字符是否为{. 如果是,则需要替换为0。同时考虑前10位,取一个负小数{。示例:如果输入为111123456789{,则输出将为11-112345678.90

我的示例输入是:

H009704COV2009084    PHD0000001H009700204COV2009084    PROD2015122016010418371304COVH009704COV2009084    PTR0000001H0097002C00000000140000000043610000003408092A0000000068061C0000000000000{0000002939340H0000000537585H0000003476926F0000001218378G0000000040292E0000000016497{0000000000827E0000001880498{9000000320436J000000004391000000001606000000000030000000000128000000000006000000004227000000000000000000000000            00000140              0000000000000{0000000000773B0000000000000{000000000000
Run Code Online (Sandbox Code Playgroud)

这里的第 300 个字符是{。因此,如果我将其替换为 0 并将其转换为负小数,则预期输出将是:

H009704COV2009084    PHD0000001H009700204COV2009084    PROD2015122016010418371304COVH009704COV2009084    PTR0000001H0097002C00000000140000000043610000003408092A0000000068061C0000000000000{0000002939340H0000000537585H0000003476926F0000001218378G0000000040292E0000000016497{0000000000827E000-000188049.809000000320436J000000004391000000001606000000000030000000000128000000000006000000004227000000000000000000000000            00000140              0000000000000{0000000000773B0000000000000{000000000000
Run Code Online (Sandbox Code Playgroud)

我可以使用 sed 命令来做到这一点:

sed -e 's/\ (.\ {1,255\ }\ )\ (.\ {1,34\ }\ )\ (.\ {1,9\ }\ )\ ([^{]*\ ){/\1\2+\3.\40/'
Run Code Online (Sandbox Code Playgroud)

但是当输入文件有大量记录(~80,000)时,性能很差。如何将上述 sed 命令转换为 Perl 以获得相同的功能?

perl

3
推荐指数
1
解决办法
4571
查看次数

在unix中使用cut和grep命令

我有一个文件(file1.txt)文本为:

aaa,,,,,
aaa,10001781,,,,
aaa,10001782,,,,
bbb,10001783,,,,
Run Code Online (Sandbox Code Playgroud)

我的file2内容是:

11111111
10001781
11111222
Run Code Online (Sandbox Code Playgroud)

我需要在file2中搜索file1的第二个字段,如果pattern匹配则从file1中删除该行.所以输出将是:

aaa,,,,,
aaa,10001782,,,,
bbb,10001783,,,,
Run Code Online (Sandbox Code Playgroud)

我可以使用grep和cut命令吗?

unix bash grep cut

1
推荐指数
1
解决办法
1968
查看次数

读取命令在if语句中不起作用.在ksh

如何仅在特定条件下读取用户输入.以下代码在ksh中不起作用:

if [[ $contract = "$fld1" ]];then
   read position?"Enter the position of Contract number in m-n format,m should be less than n "
fi
Run Code Online (Sandbox Code Playgroud)

在上述条件下代码不等待用户提示

unix shell ksh

1
推荐指数
1
解决办法
384
查看次数

标签 统计

unix ×3

shell ×2

awk ×1

bash ×1

cut ×1

grep ×1

ksh ×1

perl ×1