减少模式中的字符串长度

时间:2017-06-29 16:12:12

标签: bash

我有一个像这样的字符串:

text1;text2;text3;text4;text5;text6 

我需要在第3次发生后减少字符串的长度;所以在那种情况下

text

,例如4个字符。

到目前为止我做了:

echo "$(cat pp.txt | awk -F ";" '{print $4}' | sed 's/^\(...\).*/\1/;q' )"

但输出是" text"。我需要的是:

Text1;text2;text3;text;text5;text6

请帮忙

1 个答案:

答案 0 :(得分:0)

您可以使用awk之类的

来完成所有操作
awk -F\; 'BEGIN {OFS=FS} {$4=substr($4, 0, 4); print}' pp.txt

您可以修改awk中的字段,我们使用$4=substr($4, 0, 4)进行操作。这将从{0}到第4个字符采用$4的子字符串,然后将其存储回第四个字段。然后我们只打印带有更新值的行。

此外,将输出字段分隔符设置为与我们在命令行中指定的分隔符相同,因此我们在打印时不会更改它。