我有一个像这样的字符串:
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
请帮忙
答案 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
的子字符串,然后将其存储回第四个字段。然后我们只打印带有更新值的行。
此外,将输出字段分隔符设置为与我们在命令行中指定的分隔符相同,因此我们在打印时不会更改它。