如果单词之间有空格,则将连字符放在第二列中的命令

如果单词之间有空格,则将连字符放在第二列中的命令

test.txt假设您有一个名为以下数据的文件:

you wel come
how nice
what do ing

如果单词之间有空格,如何在第二列中添加连字符?

答案1

要将每行的第二个空格字符替换为-

$ sed 's/ /-/2' test.txt
you wel-come
how nice
what do-ing

要将除第一行之外的每行的每个空格字符替换为 GNU sed

sed 's/ /-/2g'

对于每个 sed:

sed -e :1 -e 's/ /-/2;t1'

-要将每行上的所有其他空格替换为 a :

sed 's/\( [^ ]*\) /\1-/g'

答案2

我会read使用两个变量名的命令。这会将第一个单词放入第一个变量中,将所有其他单词放入第二个变量中。然后我可以使用 bash 参数替换将空格替换为连字符。

while read -r first rest; do
    echo "$first ${rest// /-}"
done < test.txt

请注意,这将不是折叠空格,因此如果一行中的单词之间有多个空格,例如

hello     there     big     world

你会得到这个输出:

hello there-----big-----world

如果您只希望使用一个连字符,那么您可以将这些单词读入 bash 数组中:

while read -ra words; do
    echo "${words[0]} $(IFS=-; echo "${words[*]:1}")"
done < test.txt

相关内容