2016-09-30 46 views
1

对不起,如果这已被覆盖。我没有找到合适的东西。如何在不丢失其他字段的情况下缩短文本的中间字段

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

firstField secondfieldisthislong thirdField 
firstField secondfieldisreallylongandgoesonforever thirdField 
firstField secondshortfield thirdField 

我想截断第二个字段为固定长度。 Cut似乎无法做到这一点,而我的awk/sed技能并不好。谢谢。

回答

4

随着awk

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

你想要的字符长度取代10

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

substr($2, offset, length)会做字符串切片,从offset开始到length个字符。

实施例:

% 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 
0

随着GNU sed的:

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