Linux 在bash中使用awk或sed编辑文本
我的Linux 在bash中使用awk或sed编辑文本,linux,bash,shell,awk,sed,Linux,Bash,Shell,Awk,Sed,我的文件.txt的内容如下: fghfg sdfsd thrt wefs dfd htyj dfd gsedf 1 sdfsdf 3 sdfghj f fgdfhtyu dfdsfsd sdgdfg sdfzcxzc fgjty 我想更改此部分: 1 sdfsdf 3 sdfghj f fgdfhtyu 对此:(通过删除第一列和空格) 然后将file.txt的整个输出重定向到file2.txt 怎么可能 谢谢尝试将
文件.txt的内容如下:
fghfg
sdfsd
thrt
wefs
dfd
htyj
dfd
gsedf
1 sdfsdf
3 sdfghj
f fgdfhtyu
dfdsfsd
sdgdfg
sdfzcxzc
fgjty
我想更改此部分:
1 sdfsdf
3 sdfghj
f fgdfhtyu
对此:(通过删除第一列和空格)
然后将file.txt
的整个输出重定向到file2.txt
怎么可能
谢谢尝试将脚本更改为:
find "$1" -print |
while IFS= read -r line; do
awk '!a[$0]++{print $NF}' "$line" > /tmp/file.txt
done
是否需要更改任何内容?尝试将脚本更改为:
find "$1" -print |
while IFS= read -r line; do
awk '!a[$0]++{print $NF}' "$line" > /tmp/file.txt
done
有什么需要更改的吗?使用sed,您可以执行以下操作
sed 's/^ \+[^ ] \+//' file1.txt > file2.txt
它将删除行首包含空格序列的所有序列,后跟一个非空格字符,而不是空格序列。使用问题中的文件,结果是:
fghfg
sdfsd
thrt
wefs
dfd
htyj
dfd
gsedf
sdfsdf
sdfghj
fgdfhtyu
dfdsfsd
sdgdfg
sdfzcxzc
fgjty
使用sed,您可以执行以下操作
sed 's/^ \+[^ ] \+//' file1.txt > file2.txt
它将删除行首包含空格序列的所有序列,后跟一个非空格字符,而不是空格序列。使用问题中的文件,结果是:
fghfg
sdfsd
thrt
wefs
dfd
htyj
dfd
gsedf
sdfsdf
sdfghj
fgdfhtyu
dfdsfsd
sdgdfg
sdfzcxzc
fgjty
这应该做到:
awk '{print $NF}' file.txt > file2.txt
或当天最短的解决方案:
awk '{$0=$NF}1' file.txt > file2.txt
cat file2.txt
fghfg
sdfsd
thrt
wefs
dfd
htyj
dfd
gsedf
sdfsdf
sdfghj
fgdfhtyu
dfdsfsd
sdgdfg
sdfzcxzc
fgjty
只需打印最后一列。这应该可以:
awk '{print $NF}' file.txt > file2.txt
或当天最短的解决方案:
awk '{$0=$NF}1' file.txt > file2.txt
cat file2.txt
fghfg
sdfsd
thrt
wefs
dfd
htyj
dfd
gsedf
sdfsdf
sdfghj
fgdfhtyu
dfdsfsd
sdgdfg
sdfzcxzc
fgjty
只需打印最后一列。另一个简单的sed
命令
sed 's/.* \(.*\)/\1/g' file1.txt > file2.txt
另一个简单的sed
命令
sed 's/.* \(.*\)/\1/g' file1.txt > file2.txt
这个问题不是很清楚。你说达到这个模式是什么意思?我的意思是删除第一列..是的…我通过这个命令awk'删除了副本!一个[$0]+'“$line”
。谢谢。问题还不清楚awk'{print$NF}文件名
可能就是你要找的。好吧,算了吧……可能是我错了……请帮我做这个……我又更新了我的问题……谢谢问题不太清楚。你说达到这个模式是什么意思?我的意思是删除第一列..是的…我通过这个命令awk'删除了副本!一个[$0]+'“$line”
。谢谢。问题还不清楚awk'{print$NF}文件名
可能就是你要找的。好吧,算了吧……可能是我错了……请帮我做这个……我又更新了我的问题……谢谢谢谢谢谢我得到了答案谢谢我得到了答案answer@MortezaLSC您可以冷使用awk'$0=$NF'
,但它并不健壮,会删除空行。我也确实更喜欢awk
而不是sed
,因为它更可读。当然你是对的。。。我不知道为什么我不能解决它。。。我失去了注意力:)awk'$0=$NF'
不仅会删除空行,还会删除数值计算结果为零的字符串行,例如0
,0.0
,0e10
,等等。@MortezaLSC您可以冷用awk'$0=$NF'
,但它并不健壮,而且会删除空行。我也确实更喜欢awk
而不是sed
,因为它更可读。当然你是对的。。。我不知道为什么我不能解决它。。。我失去了注意力:)awk'$0=$NF'
不仅会删除空行,还会删除数值计算结果为零的字符串行,例如0
,0.0
,0e10
,等等@Mortez试试这个sed's/*\(.\)/\1/g;s/\(.*)/test:\1/g'file1.txt>file2.txt
@Mortez试试这个sed's/*\(.*)/\1/g;s/\(.*)/test:\1/g'file1.txt>file2.txt