Awk 如何仅在第一列中的单词末尾添加特定字符?

Awk 如何仅在第一列中的单词末尾添加特定字符?,awk,sed,Awk,Sed,我需要以这种方式操作文件: 文件在- 1 34566 34765 2 45678 45789 3 34567 34799 X 67895 66900 Y 34567 34890 文件输出 1_M 34566 34765 2_M 45678 45789 3_M 34567 34799 X_M 67895 66900 Y_M 34567 34890 谢谢 $ cat data 1 34566 34765 2 45678 45789 3 34567 34799 X 67895

我需要以这种方式操作文件:

文件在-

1 34566 34765 

2 45678 45789

3 34567 34799

X 67895 66900

Y 34567 34890
文件输出

1_M 34566 34765

2_M 45678 45789

3_M 34567 34799

X_M 67895 66900

Y_M 34567 34890
谢谢

$ cat data 
1 34566 34765 
2 45678 45789
3 34567 34799
X 67895 66900
Y 34567 34890
使用
awk

$ awk '{print $1 "_M",$2,$3}' data 
1_M 34566 34765
2_M 45678 45789
3_M 34567 34799
X_M 67895 66900
Y_M 34567 34890
$ sed 's/^\S*/&_M/' data 
1_M 34566 34765 
2_M 45678 45789
3_M 34567 34799
X_M 67895 66900
Y_M 34567 34890
使用
sed

$ awk '{print $1 "_M",$2,$3}' data 
1_M 34566 34765
2_M 45678 45789
3_M 34567 34799
X_M 67895 66900
Y_M 34567 34890
$ sed 's/^\S*/&_M/' data 
1_M 34566 34765 
2_M 45678 45789
3_M 34567 34799
X_M 67895 66900
Y_M 34567 34890
说明:

  • awk'{print$1“\M”、$2$3}'数据
    打印出第一个字段 与“_M”连接,后跟第二个字段,然后是第三个字段。 请注意,
    awk
    中的串联运算符是一个空格
  • 对于
    sed
    命令:

  • sed的/^\s*/&_M/”数据
    运行替换(
    s
    命令)以 替代品
  • ^\S*
    =>
    \S
    表示空白字符,
    \S
    表示非空白字符 空白字符,
    *
    表示0或更多<代码>^是 确保匹配从行开始
  • sed中的
    &
    表示匹配的字符串
  • 因此,简而言之,我们用
    ^\S*
    替换
    ^\S*\u M

  • 阅读,然后按照要求提问。谢谢你的代码。你能解释一下吗。我通过SED教程来解决这个问题,但是没有。如果有什么解释的话,会有帮助的。