我正在编写一个函数,我在其中替换列中的前导/尾随空格,如果列中没有值,则将其替换为null.函数适用于一列,但我如何修改多列.
功能:
#cat trimfunction
#!/bin/bash
function trim
{
vCol=$1 ###input column name
vFile=$2 ###input file name
var3=/home/vipin/temp ###temp file
awk -v col="${vCol}" -f /home/vipin/colf.awk ${vFile} > $var3 ###operation
mv -f $var3 $vFile ###Forcefully mv
}
Run Code Online (Sandbox Code Playgroud)
AWK脚本:
#cat colf.awk
#!/bin/awk -f
BEGIN{FS=OFS="|"}{
gsub(/^[ \t]+|[ \t]+$/, "", $col) ###replace space from 2nd column
}
{if ($col=="") {print $1,"NULL",$3} else print $0} ###replace whitespace with NULL
Run Code Online (Sandbox Code Playgroud)
输入文件:第二列中的前导/尾随/空格
#cat filename.txt
1| 2016-01|00000321|12
2|2016-02 |000000432|13
3|2017-03 |000004312|54
4| |000005|32
5|2017-05|00000543|12
Run Code Online (Sandbox Code Playgroud)
脚本:
#cat script.sh
. /home/vipin/trimfunction …Run Code Online (Sandbox Code Playgroud) 我有一个如下文件 -
vipin kumar ........................ kumar ......bangalore
something something .......
;
vipin kumar ........................ kumar ......bangalore
something something .......(testing
)
;
vipin kumar ......................... kumar .....bangalore
something something ;
Run Code Online (Sandbox Code Playgroud)
我想要输出如下(名称和数字可以在文件中不同但唯一的共同点 - 当我们有";"时行结束)
vipin kumar ........................ kumar ......bangalore something something .......;
vipin kumar ........................ kumar ......bangalore something something .......(testing);
vipin kumar ......................... kumar .....bangaloresomething something ;
I want to set the RS to ";" .
Run Code Online (Sandbox Code Playgroud)
我试过下面的命令 -
awk '{ORS=(NR%2==0?RS:FS)}1' file.txt
Run Code Online (Sandbox Code Playgroud)
但它没有提供正确的输出,因为
NR%2 or NR%3 不会工作,因为我不确定我会得到多少行 ;
然后我试着将RS设置为; 使用下面
awk '{for(i=1;i<=NF;i++) (ORS=(if($i …Run Code Online (Sandbox Code Playgroud) 例如在这个文件中
a;b;c
a;b;v
a;b;f
Run Code Online (Sandbox Code Playgroud)
并使用命令输出
a;b;c;1
a;b;v;2
a;b;f;3
Run Code Online (Sandbox Code Playgroud)
请帮我