我有一个这样的文件:
A_City,QQQQ,AQ
B_State,QQQQ,BQ
C_Country,QQQQ,CQ
A_Cityt,YYYY,AY
B_State,YYYY,BY
C_Country,YYYY,CY
我想在同一个文件的行尾添加一列,每列的第一个字母。
docker-compose.yaml
我想使用sed来获取它,但如果有awk代码会有帮助。
答案 0 :(得分:1)
awk
救援!
$ awk '{print $0 "," substr($0,1,1) substr($0,length($0))}' file
A_City,QQQQ,AQ
B_State,QQQQ,BQ
C_Country,QQQQ,CQ
A_Cityt,YYYY,AY
B_State,YYYY,BY
C_Country,YYYY,CY
或者,或许
$ awk -F, '{print $0 FS substr($1,1,1) substr($2,1,1)}' file
答案 1 :(得分:0)
如果只有一个,
,则可以使用
sed -r 's/^(.).*,(.).*/&,\1\2/' file
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed -r 's/^|,+/&\n/g;s/$/,\n/;:a;s/\n(.).*,\n.*/&\1/;s/\n//;/\n.*,\n/ba;s/\n//g' file
在一行的开头或一个或多个,
后面插入换行符。在行尾添加一个额外的,
和换行符。在换行符之后附加一个字符,后跟零个或多个字符,后跟一个,
和一个最终换行符以及与其匹配的任何后续字符。删除第一个换行符。如果有两个或更多新行重复。最后删除所有换行符。
N.B。如果该行最初为空,则会向此类行添加,
。空字段可以满足,并且不会出现第一个字符。