用sed将空格替换为NULL

4

使用sed命令

  1. how can I replace \N with NULL

  2. How can I replace the empty space || with NULL.

    |200|0||0|\N||^A|0|\N||
    

期望的输出

    |200|0|NULL|0|NULL|NULL|^A|0|NULL|NULL|
5个回答

4

您需要稍微修改这个的版本。以下是适用于GNU sed的示例:

sed ':a; s:|\(\\N\)\?|:|NULL|:g; ta'

更便携的方式是:
sed -e ':a' -e 's:|\(\\N\)\?|:|NULL|:g' -e 'ta'

1
我认为你要找的命令可能叫做“tr”。试一下。
tr \\n \\0

标题中的问题最佳答案(尽管它没有回答描述中的具体问题) - Lambart
错误:这会将每个实际换行符(而不是字符串“\N”)替换为空字符(而不是字符串“NULL”)。我认为您误读了问题! - Toby Speight

0
<file sed 's/\\N/NULL/g' | awk -F\| '{for(i=2;i<=NF;i++){ if($i==""){ printf "|NULL"} else{  printf "|%s", $i}}; printf "|\n"}'

0

使用 awk

awk 'gsub("\\\\N","NULL");gsub("\\|\\|","|NULL|")' temp.txt

-2

sed -i 's/ /NULL/g' temp.txt

这将把任何空格字符替换为NULL


问题是关于一个“空”列,而不是一个带有空格的列(是的,你必须仔细阅读!)。 - Toby Speight
不,它会用"NULL"替换空格,而不是NULL字符。 - b264

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接