Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
Shell 带多个条件的nawk空格修剪_Shell_Unix_Nawk - Fatal编程技术网

Shell 带多个条件的nawk空格修剪

Shell 带多个条件的nawk空格修剪,shell,unix,nawk,Shell,Unix,Nawk,temp_file.txt |112233456543214 | |154233456873221| |154233456868320| 当我使用下面的nawk命令时,我看到如果你有空白,数据将跳过,因此我必须修剪空白。我必须在下面的命令中包含空白修剪(知道如何单独使用nwak命令),这是一个挑战。我的问题是如何在下面的命令中包含空白修剪 nawk -F '|' 'BEGIN{FS=OFS="|"}(length($2) >=13){ $2=substr($2,1,6)"xxxxxx

temp_file.txt

|112233456543214 |
|154233456873221|
|154233456868320|
当我使用下面的nawk命令时,我看到如果你有空白,数据将跳过,因此我必须修剪空白。我必须在下面的命令中包含空白修剪(知道如何单独使用nwak命令),这是一个挑战。我的问题是如何在下面的命令中包含空白修剪

nawk -F '|' 'BEGIN{FS=OFS="|"}(length($2) >=13){
  $2=substr($2,1,6)"xxxxxx"substr($2,length($2)-3)}1' temp_file.txt>tmp.txt && mv tmp.txt temp_file.txt

因为第一个字符是管道,所以
$1
将始终是空字符串。您想检查
$2
中的数据

awk -F\| -v OFS=\| '{gsub(/(^[[:blank:]]+)|([[:blank:]]+$)/, "", $2)} 1' <<END
|112233456543214 |
|  154233456873221  |
| 154233456868320|
END
如果使用的是
-F
,则不需要在BEGIN块中定义FS


如果您希望详细说明:

$ nawk -F '|' '
    BEGIN {OFS = FS}
    function obfuscate(string) {
        gsub(/(^[[:blank:]]+)|([[:blank:]]+$)/, "", string)
        return substr(string,1,6) "xxxxxx" substr(string,length(string)-3)
    }
    length($2) >= 13 {$2 = obfuscate($2) }
    1
' <<END
|112233456543214 |
|  154233456873221  |
|123456789012|
|1234567890123|
|12345678901234|
| 154233456868320|
END

因为第一个字符是管道,所以
$1
将始终是空字符串。您想检查
$2
中的数据

awk -F\| -v OFS=\| '{gsub(/(^[[:blank:]]+)|([[:blank:]]+$)/, "", $2)} 1' <<END
|112233456543214 |
|  154233456873221  |
| 154233456868320|
END
如果使用的是
-F
,则不需要在BEGIN块中定义FS


如果您希望详细说明:

$ nawk -F '|' '
    BEGIN {OFS = FS}
    function obfuscate(string) {
        gsub(/(^[[:blank:]]+)|([[:blank:]]+$)/, "", string)
        return substr(string,1,6) "xxxxxx" substr(string,length(string)-3)
    }
    length($2) >= 13 {$2 = obfuscate($2) }
    1
' <<END
|112233456543214 |
|  154233456873221  |
|123456789012|
|1234567890123|
|12345678901234|
| 154233456868320|
END

因为第一个字符是管道,所以
$1
将始终是空字符串。您想检查
$2
中的数据

awk -F\| -v OFS=\| '{gsub(/(^[[:blank:]]+)|([[:blank:]]+$)/, "", $2)} 1' <<END
|112233456543214 |
|  154233456873221  |
| 154233456868320|
END
如果使用的是
-F
,则不需要在BEGIN块中定义FS


如果您希望详细说明:

$ nawk -F '|' '
    BEGIN {OFS = FS}
    function obfuscate(string) {
        gsub(/(^[[:blank:]]+)|([[:blank:]]+$)/, "", string)
        return substr(string,1,6) "xxxxxx" substr(string,length(string)-3)
    }
    length($2) >= 13 {$2 = obfuscate($2) }
    1
' <<END
|112233456543214 |
|  154233456873221  |
|123456789012|
|1234567890123|
|12345678901234|
| 154233456868320|
END

因为第一个字符是管道,所以
$1
将始终是空字符串。您想检查
$2
中的数据

awk -F\| -v OFS=\| '{gsub(/(^[[:blank:]]+)|([[:blank:]]+$)/, "", $2)} 1' <<END
|112233456543214 |
|  154233456873221  |
| 154233456868320|
END
如果使用的是
-F
,则不需要在BEGIN块中定义FS


如果您希望详细说明:

$ nawk -F '|' '
    BEGIN {OFS = FS}
    function obfuscate(string) {
        gsub(/(^[[:blank:]]+)|([[:blank:]]+$)/, "", string)
        return substr(string,1,6) "xxxxxx" substr(string,length(string)-3)
    }
    length($2) >= 13 {$2 = obfuscate($2) }
    1
' <<END
|112233456543214 |
|  154233456873221  |
|123456789012|
|1234567890123|
|12345678901234|
| 154233456868320|
END

nawk
FS
的定义中支持正则表达式。可以使用此选项修剪前导和尾随空格或制表符

nawk -F '[[:blank:]]*[|][[:blank:]]*' 'BEGIN{OFS = "|"} (length($2) >= 13) {
    $2 = substr($2, 1, 6) "xxxxxx" substr($2, length($2) - 3)}1'

管道被方括号包围,以防止其充当正则表达式替换操作符。正则表达式表示使用零个或多个空格(空格或制表符)加上管道字符,再加上零个或多个空格作为字段分隔符。

nawk
FS
的定义中支持正则表达式。可以使用此选项修剪前导和尾随空格或制表符

nawk -F '[[:blank:]]*[|][[:blank:]]*' 'BEGIN{OFS = "|"} (length($2) >= 13) {
    $2 = substr($2, 1, 6) "xxxxxx" substr($2, length($2) - 3)}1'

管道被方括号包围,以防止其充当正则表达式替换操作符。正则表达式表示使用零个或多个空格(空格或制表符)加上管道字符,再加上零个或多个空格作为字段分隔符。

nawk
FS
的定义中支持正则表达式。可以使用此选项修剪前导和尾随空格或制表符

nawk -F '[[:blank:]]*[|][[:blank:]]*' 'BEGIN{OFS = "|"} (length($2) >= 13) {
    $2 = substr($2, 1, 6) "xxxxxx" substr($2, length($2) - 3)}1'

管道被方括号包围,以防止其充当正则表达式替换操作符。正则表达式表示使用零个或多个空格(空格或制表符)加上管道字符,再加上零个或多个空格作为字段分隔符。

nawk
FS
的定义中支持正则表达式。可以使用此选项修剪前导和尾随空格或制表符

nawk -F '[[:blank:]]*[|][[:blank:]]*' 'BEGIN{OFS = "|"} (length($2) >= 13) {
    $2 = substr($2, 1, 6) "xxxxxx" substr($2, length($2) - 3)}1'


管道被方括号包围,以防止其充当正则表达式替换操作符。正则表达式要求使用零个或多个空格(空格或制表符)和管道字符的组合以及零个或多个空格作为字段分隔符。

问题是如何在命令nawk-F'|''BEGIN{FS=OFS=“|”}(长度($1)>=13){$1=substr($1,1,6)“xxxxxx”substr($1,长度($1)-3)中包含修剪1'temp_file.txt>tmp.txt&&mv tmp.txt temp_file.txtDone。使用
tmp=$(mktemp)
而不是“tmp.txt”,或者您可以使用OP的
BEGIN
赋值并省略
-F
。您的第一个示例显示了“x”替换,但您忽略了执行此操作的功能。感谢@DennisWilliamson,糟糕的剪切粘贴问题是如何在命令nawk-F'|''BEGIN{FS=OFS=“|”}(length($1)>=13){$1=substr($1,1,6)“xxxxxx”substr($1,length($1)-3)}1'temp_file.txt>tmp.txt&&mv tmp.txt temp_file.txtDone。使用
tmp=$(mktemp)
而不是“tmp.txt”,或者您可以使用OP的
BEGIN
赋值并省略
-F
。您的第一个示例显示了“x”替换,但您忽略了执行此操作的功能。感谢@DennisWilliamson,糟糕的剪切粘贴问题是如何在命令nawk-F'|''BEGIN{FS=OFS=“|”}(length($1)>=13){$1=substr($1,1,6)“xxxxxx”substr($1,length($1)-3)}1'temp_file.txt>tmp.txt&&mv tmp.txt temp_file.txtDone。使用
tmp=$(mktemp)
而不是“tmp.txt”,或者您可以使用OP的
BEGIN
赋值并省略
-F
。您的第一个示例显示了“x”替换,但您忽略了执行此操作的功能。感谢@DennisWilliamson,糟糕的剪切粘贴问题是如何在命令nawk-F'|''BEGIN{FS=OFS=“|”}(length($1)>=13){$1=substr($1,1,6)“xxxxxx”substr($1,length($1)-3)}1'temp_file.txt>tmp.txt&&mv tmp.txt temp_file.txtDone。使用
tmp=$(mktemp)
而不是“tmp.txt”,或者您可以使用OP的
BEGIN
赋值并省略
-F
。您的第一个示例显示了“x”替换,但您忽略了执行此操作的功能。谢谢@DennisWilliamson,糟糕的剪切'n'paste@DenisThx。我尝试应用相同的命令,但我看不出有效果。它跳过了“x”替换logic@Senthil字体它对我有用。您的
nawk
是什么版本?我的是
/usr/bin/nawk->/etc/alternations/nawk->/usr/bin/gawk
,这可能解释了它的工作原理。然而,Sun
nawk
手册页说
FS
支持正则表达式。格伦·杰克曼的例子对你有用吗?(或者这是他的第一个例子,完全缺少“x”替换,这给你带来了问题,而不是我的问题)@Denis Thx。我尝试应用相同的命令,但我看不出效果。它跳过了“x”替换logic@Senthil字体它对我有用。您的
nawk
是什么版本?我是
/usr/bin/nawk->/etc/alternations/nawk->/usr/bin