我有档案:
name name1 name2 name3 name4 name[n]
value1 A:A B:B C:C D:D E:E
value2 A:A B:B C:C D:D E:E
value[n] A:A B:B C:C D:D E:E
我需要输出
name name1 name2 name3 name4 name[n]
value1 AA BB CC DD EE
value2 AA BB CC DD EE
value[n] AA BB CC DD EE
只需删除值之间的冒号即可。我会尝试类似的东西:
awk '{split($2,arr1,/:/); print arr1[1]arr1[2]}' file
这给了我$ 2列。我不需要awk解决方案。
答案 0 :(得分:3)
问题是只删除字符冒号(:),因此避免了对我没有要求的复杂性导致:
cat file_with_colons | tr -d ':'
或者@andlrc当然在注释中指出(如果没有其他进程/管道需要):
tr -d ':' < file_with_colons
从我系统的手册页:
TR(1) BSD General Commands Manual TR(1)
NAME
tr -- translate characters
SYNOPSIS
tr [-Ccsu] string1 string2
tr [-Ccu] -d string1
tr [-Ccu] -s string1
tr [-Ccu] -ds string1 string2
DESCRIPTION
The tr utility copies the standard input to the standard output with substitution or deletion of selected characters.
The following options are available:
# ... 8< - -
-d Delete characters in string1 from the input.
# - - >8 ...
答案 1 :(得分:1)
您可以简单地使用sed。
sed 's/\([A-Z]\):\([A-Z]\)/\1\2/g' file
\(pattern\)
捕获组,捕获与模式匹配的所有字符。因此,第一个捕获组\([A-Z]\)
捕获在:
之前存在的大写字母,同样第二组捕获以下字母。
\1
反向引用第一个捕获组..
答案 2 :(得分:1)
awk '{gsub(/:/,"")}1' file
name name1 name2 name3 name4 name[n]
value1 AA BB CC DD EE
value2 AA BB CC DD EE
value[n] AA BB CC DD EE