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