使用 sed 仅输出逗号前列出的单个单词
Using sed to output only single word listed before a comma
我正在学习 sed 并且已经接近找到以下问题的解决方案:
Print the lines of all Oceania countries that have a one word name
(example: print Australia but not Solomon Islands)
命令:
sed -n -e 's/\(.*\)\(,OC,\)\(.*\)//p' countries
输出:
American Samoa
Australia
Cook Islands
Fiji
Micronesia
Guam
Kiribati
Marshall Islands
Northern Mariana Islands
New Caledonia
Norfolk Island
Nauru
Niue
New Zealand
French Polynesia
Papua New Guinea
Pitcairn
Palau
Solomon Islands
Tokelau
Tonga
Tuvalu
United States Minor Outlying Islands
Vanuatu
Wallis and Futuna
Samoa
我想知道如何使用 sed 在单独的命令中实现以下目的:
- 删除带空格的行
- 删除没有空格的行
我也很想知道 <TAB>
在 sed 中的正确字符是什么,尤其是像这样的命令:
sed 's/,/<TAB>/'
我已经看到了 <Control-V><TAB>
技巧,但是有没有可以替代使用的字符集?
我知道您要求 sed
,但有时其他程序可能会像 awk
在这种情况下做得很好。
这将适用于选项卡和 space 以及多个 space/tabs.
awk 'NF==1' file
Australia
Fiji
Micronesia
Guam
Kiribati
Nauru
Niue
Pitcairn
Palau
Tokelau
Tonga
Tuvalu
Vanuatu
Samoa
它只打印一个字段的所有行。
不止一个字段。
awk 'NF!=1'
American Samoa
Cook Islands
Marshall Islands
Northern Mariana Islands
New Caledonia
Norfolk Island
New Zealand
French Polynesia
Papua New Guinea
Solomon Islands
United States Minor Outlying Islands
Wallis and Futuna
这甚至应该有效:
awk NF==1 file
这可能适合您 (GNU sed):
sed '/[[:space:]]/d' file # removes lines with space(s)
和
sed '/[[:space:]]/!d' file # removes lines with no space(s)
用制表符替换逗号使用:
sed 's/,/\t/' file
或所有带制表符的逗号使用:
sed 'y/,/\t/' file
在删除带有 space
的行之前删除尾随 spaces
sed -e 's/ *$//' -e '/ / d'
(看起来像 grep -v " "
)。
我正在学习 sed 并且已经接近找到以下问题的解决方案:
Print the lines of all Oceania countries that have a one word name (example: print Australia but not Solomon Islands)
命令:
sed -n -e 's/\(.*\)\(,OC,\)\(.*\)//p' countries
输出:
American Samoa
Australia
Cook Islands
Fiji
Micronesia
Guam
Kiribati
Marshall Islands
Northern Mariana Islands
New Caledonia
Norfolk Island
Nauru
Niue
New Zealand
French Polynesia
Papua New Guinea
Pitcairn
Palau
Solomon Islands
Tokelau
Tonga
Tuvalu
United States Minor Outlying Islands
Vanuatu
Wallis and Futuna
Samoa
我想知道如何使用 sed 在单独的命令中实现以下目的:
- 删除带空格的行
- 删除没有空格的行
我也很想知道 <TAB>
在 sed 中的正确字符是什么,尤其是像这样的命令:
sed 's/,/<TAB>/'
我已经看到了 <Control-V><TAB>
技巧,但是有没有可以替代使用的字符集?
我知道您要求 sed
,但有时其他程序可能会像 awk
在这种情况下做得很好。
这将适用于选项卡和 space 以及多个 space/tabs.
awk 'NF==1' file
Australia
Fiji
Micronesia
Guam
Kiribati
Nauru
Niue
Pitcairn
Palau
Tokelau
Tonga
Tuvalu
Vanuatu
Samoa
它只打印一个字段的所有行。
不止一个字段。
awk 'NF!=1'
American Samoa
Cook Islands
Marshall Islands
Northern Mariana Islands
New Caledonia
Norfolk Island
New Zealand
French Polynesia
Papua New Guinea
Solomon Islands
United States Minor Outlying Islands
Wallis and Futuna
这甚至应该有效:
awk NF==1 file
这可能适合您 (GNU sed):
sed '/[[:space:]]/d' file # removes lines with space(s)
和
sed '/[[:space:]]/!d' file # removes lines with no space(s)
用制表符替换逗号使用:
sed 's/,/\t/' file
或所有带制表符的逗号使用:
sed 'y/,/\t/' file
在删除带有 space
的行之前删除尾随 spacessed -e 's/ *$//' -e '/ / d'
(看起来像 grep -v " "
)。