Shell 将每列的第一个字母填入下线

Shell 将每列的第一个字母填入下线,shell,awk,sed,Shell,Awk,Sed,我有这样一个文件: A_City,QQQQ B_State,QQQQ C_Country,QQQQ A_Cityt,YYYY B_State,YYYY C_Country,YYYY 我想在同一个文件的行末再添加一列,每列的第一个字母 A_City,QQQQ,AQ B_State,QQQQ,BQ C_Country,QQQQ,CQ A_Cityt,YYYY,AY B_State,YYYY,BY C_Country,YYYY,CY 我想使用sed获取此信息,但如果有awk代码,则会有所帮助。aw

我有这样一个文件:

A_City,QQQQ
B_State,QQQQ
C_Country,QQQQ
A_Cityt,YYYY
B_State,YYYY
C_Country,YYYY
我想在同一个文件的行末再添加一列,每列的第一个字母

A_City,QQQQ,AQ
B_State,QQQQ,BQ
C_Country,QQQQ,CQ
A_Cityt,YYYY,AY
B_State,YYYY,BY
C_Country,YYYY,CY

我想使用sed获取此信息,但如果有awk代码,则会有所帮助。

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

当您只有一个
时,
可以使用

sed -r 's/^(.).*,(.).*/&,\1\2/' file
这可能适用于您(GNU-sed):

在行首或一个或多个
后面插入新行。在行尾追加一个附加的
和一个换行符。在换行符后添加一个字符,后跟零个或多个字符,后跟一个
,最后一个换行符和任何后续字符到其匹配项中。删除第一个换行符。如果有两个或多个换行符,请重复。最后删除所有换行符


注意:如果该行最初为空,这将在这些行中添加一个
。空字段适用于并将不使用第一个字符表示。

仅单独使用tr'[a-z]''[a-z]' sed -r 's/^|,+/&\n/g;s/$/,\n/;:a;s/\n(.).*,\n.*/&\1/;s/\n//;/\n.*,\n/ba;s/\n//g' file