Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何使用cut和unix工具删除空格,并仅显示第二个字段中的第一个字符?_Linux_Unix_Text - Fatal编程技术网

Linux 如何使用cut和unix工具删除空格,并仅显示第二个字段中的第一个字符?

Linux 如何使用cut和unix工具删除空格,并仅显示第二个字段中的第一个字符?,linux,unix,text,Linux,Unix,Text,我有一个每行都有名称的文本文件,如: john doe roger smith john kennedy 我想把它翻译成: johnd rogers johnk 我知道如何使用tr删除空格,我可以使用空格作为分隔符显示,并使用cut显示第二个字段,然后将输出传递到cut,只显示第一个字符,但我不确定如何组合这些步骤以获得所需的输出。我将使用awk: awk '{ printf "%s%s\n", $1, substr($2, 1, 1) }' file.txt 我会使用awk: awk '

我有一个每行都有名称的文本文件,如:

john doe
roger smith
john kennedy
我想把它翻译成:

johnd
rogers
johnk

我知道如何使用
tr
删除空格,我可以使用空格作为分隔符显示,并使用
cut
显示第二个字段,然后将输出传递到cut,只显示第一个字符,但我不确定如何组合这些步骤以获得所需的输出。

我将使用
awk

awk '{ printf "%s%s\n", $1, substr($2, 1, 1) }' file.txt

我会使用
awk

awk '{ printf "%s%s\n", $1, substr($2, 1, 1) }' file.txt

如上所述,使用
awk
可能是最好的方法,但另一种方法是循环文件并使用
printf

while read firstname surname; do
   printf "%s%s\n" ${firstname} ${surname:0:1}
done < file.txt
读名字和姓氏时;做
printf“%s%s\n”${firstname}${姓氏:0:1}
完成
如上所述,使用
awk
可能是最好的方法,但另一种方法是循环文件并使用
printf

while read firstname surname; do
   printf "%s%s\n" ${firstname} ${surname:0:1}
done < file.txt
读名字和姓氏时;做
printf“%s%s\n”${firstname}${姓氏:0:1}
完成