如何缩短文本的中间字段而不失去其他字段



抱歉,如果这已经被覆盖了。我找不到合适的。

如果我有一个文本文件的可变长度字段,我如何截断一个字段而不牺牲其他字段?一个例子;

firstField secondfieldisthislong thirdField
firstField secondfieldisreallylongandgoesonforever thirdField
firstField secondshortfield thirdField

我想截断第二个字段到固定长度。切似乎不能做到这一点,我的awk/sed技能不是很好。谢谢。

awk:

awk '{$2 = substr($2, 1, 10)}; 1' file.txt

10替换为您想要的字符长度

在这里,我们正在重建记录,将第二个字段截断为所需的长度。

substr($2, offset, length)将执行字符串切片,从offsetlength字符。

例子:

% cat file.txt                              
firstField secondfieldisthislong thirdField
firstField secondfieldisreallylongandgoesonforever thirdField
firstField secondshortfield thirdField
% awk '{$2 = substr($2, 1, 6)}; 1' file.txt
firstField second thirdField
firstField second thirdField
firstField second thirdField
% awk '{$2 = substr($2, 1, 10)}; 1' file.txt
firstField secondfiel thirdField
firstField secondfiel thirdField
firstField secondshor thirdField

使用GNU sed:

$ sed -r 's/(.* .{6}).* /1 /' <<< "firstField secondfieldisreallylongandgoesonforever thirdField"
firstField second thirdField

最新更新